import type { IsoDateTimeString } from "../common"; export interface SalesforceQueryResult { 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; }