121 lines
3.2 KiB
TypeScript
Raw Normal View History

/**
* Orders Domain - Contract
*
* Business types and provider-specific mapping types.
* Validated types are derived from schemas (see schema.ts).
*/
import type { SalesforceProductFieldMap } from "../catalog/contract";
import type { SalesforceAccountFieldMap } from "../customer/contract";
import type { UserIdMapping } from "../mappings/contract";
// ============================================================================
// Business Types (used internally, not validated at API boundary)
// ============================================================================
/**
* Order creation type used for order creation flows
*/
export type OrderCreationType = "Internet" | "SIM" | "VPN" | "Other";
/**
* Order status (string literal for flexibility)
*/
export type OrderStatus = string;
/**
* Order type (string literal for flexibility)
*/
export type OrderType = string;
/**
* User mapping for order creation (subset of UserIdMapping)
*/
export type UserMapping = Pick<UserIdMapping, "userId" | "whmcsClientId" | "sfAccountId">;
// ============================================================================
// Salesforce Field Mapping (Provider-Specific, Not Validated)
// ============================================================================
export interface SalesforceOrderMnpFieldMap {
application: string;
reservationNumber: string;
expiryDate: string;
phoneNumber: string;
mvnoAccountNumber: string;
portingDateOfBirth: string;
portingFirstName: string;
portingLastName: string;
portingFirstNameKatakana: string;
portingLastNameKatakana: string;
portingGender: string;
}
export interface SalesforceOrderBillingFieldMap {
street: string;
city: string;
state: string;
postalCode: string;
country: string;
}
export interface SalesforceOrderFieldMap {
orderType: string;
activationType: string;
activationScheduledAt: string;
activationStatus: string;
internetPlanTier: string;
installationType: string;
weekendInstall: string;
accessMode: string;
hikariDenwa: string;
vpnRegion: string;
simType: string;
eid: string;
simVoiceMail: string;
simCallWaiting: string;
mnp: SalesforceOrderMnpFieldMap;
whmcsOrderId: string;
lastErrorCode?: string;
lastErrorMessage?: string;
lastAttemptAt?: string;
addressChanged: string;
billing: SalesforceOrderBillingFieldMap;
}
export interface SalesforceOrderItemFieldMap {
billingCycle: string;
whmcsServiceId: string;
}
export interface SalesforceFieldMap {
account: SalesforceAccountFieldMap;
product: SalesforceProductFieldMap;
order: SalesforceOrderFieldMap;
orderItem: SalesforceOrderItemFieldMap;
}
// ============================================================================
// Re-export Types from Schema (Schema-First Approach)
// ============================================================================
export type {
// Fulfillment order types
FulfillmentOrderProduct,
FulfillmentOrderItem,
FulfillmentOrderDetails,
// Order item types
OrderItemSummary,
OrderItemDetails,
// Order types
OrderSummary,
OrderDetails,
// Query and creation types
OrderQueryParams,
OrderConfigurationsAddress,
OrderConfigurations,
CreateOrderRequest,
OrderBusinessValidation,
SfOrderIdParam,
} from './schema';