154 lines
5.0 KiB
TypeScript

import type { IsoDateTimeString } from "../common";
export interface SalesforceQueryResult<TRecord> {
totalSize: number;
done: boolean;
records: TRecord[];
}
export interface SalesforceCreateResult {
id: string;
success: boolean;
errors?: string[];
}
export interface SalesforceSObjectBase {
Id: string;
CreatedDate?: IsoDateTimeString;
LastModifiedDate?: IsoDateTimeString;
}
export type SalesforceOrderStatus = string;
export type SalesforceOrderType = string;
export type SalesforceOrderItemStatus = string;
export interface SalesforceProduct2Record extends SalesforceSObjectBase {
Name?: string;
StockKeepingUnit?: string;
Description?: string;
Product2Categories1__c?: string | null;
Portal_Catalog__c?: boolean | null;
Portal_Accessible__c?: boolean | null;
Item_Class__c?: string | null;
Billing_Cycle__c?: string | null;
Catalog_Order__c?: number | null;
Bundled_Addon__c?: string | null;
Is_Bundled_Addon__c?: boolean | null;
Internet_Plan_Tier__c?: string | null;
Internet_Offering_Type__c?: string | null;
Feature_List__c?: string | null;
SIM_Data_Size__c?: string | null;
SIM_Plan_Type__c?: string | null;
SIM_Has_Family_Discount__c?: boolean | null;
VPN_Region__c?: string | null;
WH_Product_ID__c?: number | null;
WH_Product_Name__c?: string | null;
Price__c?: number | null;
Monthly_Price__c?: number | null;
One_Time_Price__c?: number | null;
}
export interface SalesforcePricebookEntryRecord extends SalesforceSObjectBase {
Name?: string;
UnitPrice?: number | string | null;
Pricebook2Id?: string | null;
Product2Id?: string | null;
IsActive?: boolean | null;
Product2?: SalesforceProduct2Record | null;
}
export interface SalesforceProduct2WithPricebookEntries extends SalesforceProduct2Record {
PricebookEntries?: {
records?: SalesforcePricebookEntryRecord[];
};
}
export interface SalesforceProductFieldMap {
sku: string;
portalCategory: string;
portalCatalog: string;
portalAccessible: string;
itemClass: string;
billingCycle: string;
whmcsProductId: string;
whmcsProductName: string;
internetPlanTier: string;
internetOfferingType: string;
displayOrder: string;
bundledAddon: string;
isBundledAddon: string;
simDataSize: string;
simPlanType: string;
simHasFamilyDiscount: string;
vpnRegion: string;
}
export interface SalesforceAccountRecord extends SalesforceSObjectBase {
Name?: string;
SF_Account_No__c?: string | null;
WH_Account__c?: string | null;
BillingStreet?: string | null;
BillingCity?: string | null;
BillingState?: string | null;
BillingPostalCode?: string | null;
BillingCountry?: string | null;
}
export interface SalesforceOrderRecord extends SalesforceSObjectBase {
OrderNumber?: string;
Status?: string;
Type?: string;
EffectiveDate?: IsoDateTimeString | null;
TotalAmount?: number | null;
AccountId?: string | null;
Account?: {
Name?: string | null;
} | null;
Pricebook2Id?: string | null;
Activation_Type__c?: string | null;
Activation_Status__c?: string | null;
Activation_Scheduled_At__c?: IsoDateTimeString | null;
Internet_Plan_Tier__c?: string | null;
Installment_Plan__c?: string | null;
Access_Mode__c?: string | null;
Weekend_Install__c?: boolean | null;
Hikari_Denwa__c?: boolean | null;
VPN_Region__c?: string | null;
SIM_Type__c?: string | null;
SIM_Voice_Mail__c?: boolean | null;
SIM_Call_Waiting__c?: boolean | null;
EID__c?: string | null;
WHMCS_Order_ID__c?: string | null;
Activation_Error_Code__c?: string | null;
Activation_Error_Message__c?: string | null;
ActivatedDate?: IsoDateTimeString | null;
}
export interface SalesforceOrderItemSummary {
productName?: string;
sku?: string;
status?: SalesforceOrderItemStatus;
billingCycle?: string;
}
export interface SalesforceOrderSummary {
id: string;
orderNumber: string;
status: SalesforceOrderStatus;
orderType?: SalesforceOrderType;
effectiveDate: IsoDateTimeString;
totalAmount?: number;
createdDate: IsoDateTimeString;
lastModifiedDate: IsoDateTimeString;
whmcsOrderId?: string;
itemsSummary: SalesforceOrderItemSummary[];
}
export interface SalesforceOrderItemRecord extends SalesforceSObjectBase {
OrderId?: string | null;
Quantity?: number | null;
UnitPrice?: number | null;
TotalPrice?: number | null;
PricebookEntryId?: string | null;
PricebookEntry?: SalesforcePricebookEntryRecord | null;
Billing_Cycle__c?: string | null;
WHMCS_Service_ID__c?: string | null;
}
export interface SalesforceAccountContactRecord extends SalesforceSObjectBase {
AccountId?: string | null;
ContactId?: string | null;
}
export interface SalesforceContactRecord extends SalesforceSObjectBase {
FirstName?: string | null;
LastName?: string | null;
Email?: string | null;
Phone?: string | null;
}