import { Tax } from './invoice-config'; import { PaymentConfig, MultiplePaymentConfig } from './payment-config'; import { LanguageEnum, CompanyEnum, ServeType, UsageMode, StoreTemplateItemEnum, InvoiceProvider, OnlineOpeningHoursSettingType } from '../enums'; import { ExternalConfig } from './external-config'; import { ServeConfig } from './table'; import { CustomerConfig } from './customer'; import { MultiLanguageText } from './language'; import { StoreOnlinePlatformStore } from './online-integration'; import { RoundingMode } from '../enums/rounding-mode.enum'; export interface StoreUser { id?: string; storeId: string; userId: string; name: string; note: string; pinCode: string; email: string; isOwner?: boolean; } export interface Operator { storeUserId: string; name: string; } export declare type Brand = { brandNo: string; memberPoolNo: string; clientId: string; name: string; introduction: string; logoUrl: string; themeColor: { primary: string; primaryRgb: string; primaryTint: string; primaryShade: string; primaryContrast: string; primaryContrastRgb: string; }; mainStoreNo: number; createEmployeeNo: number; createDatetime: string; lastEditEmployeeNo: number; lastEditDatetime: string; isActive: number; isDel: number; }; export interface Store { id?: string; /** 讓店家自行定義的店號,會印在發票及收據上 */ displayId?: string; name: string; createdAt?: number; company: CompanyEnum; description: string; logoImageUrl: string; invoiceConfig: StoreInvoiceConfig; galleryConfig: GalleryConfig; /** 地區代碼 ISO 3166-1 alpha-2 ex: TW, SG 無值時應視為 TW */ regionCode?: string; /** 幣別 ISO 4217 ex: TWD, SGD,... 無值時應視為 TWD */ currencyCode?: string; /** 訂單金額小數位數 */ orderDecimalDigits?: number; /** 品項、附加屬性、折扣...金額小數位數 */ itemDecimalDigits?: number; /** 進位模式,無值時應視為 四捨五入 */ roundingMode?: RoundingMode; /** * For POS */ paymentConfigs: PaymentConfig[]; supportedLanguages: LanguageEnum[]; externalConfigs?: ExternalConfig[]; skipVerifyPosId?: boolean; /** * For KIOSK */ kioskPaymentConfigs?: PaymentConfig[]; /** * @readonly * 使用 lambda func `realTimeSwitch` 來更新此 property * * if value is undefined, default value regarding as a * ``` * { * disableTakeOut: false, * disableDineIn: false, * dineInInputType: ServeInputType.AnyString, * } * ``` */ serveConfig?: ServeConfig; /** * if value is undefined, default value regarding as * ``` * { * disabled: true; * applyingOnKiosk: false; * } * ``` */ customerConfig?: CustomerConfig; /** * @readonly * 使用 lambda func `realTimeSwitch` 來更新此 property */ kioskDisabled?: boolean; flowConfig?: FlowConfig; multiplePaymentConfigs?: MultiplePaymentConfig[]; accountConfigs?: AccountConfig[]; posMasterAppId?: string; posSerialNumber?: string; usageMode?: UsageMode; /** * the value of constants/industry.ts */ industry?: number; phone?: string; address?: Address; openingHours?: DayOfWeekTimePeriod[]; /** * properties for chain feature */ isTemplate?: boolean; storeTemplateId?: string; chainId?: string; uberEatsStoreId?: string; uberEatsCustomPaymentConfigName?: string; /** for pos integration */ posIntegration?: StoreOnlinePlatformStore; /** 不能手動新增修改品項; 只能用從pos integration 同步 */ disableManualEditProduct?: boolean; /** * 線上店名 */ onlineStoreName?: string; /** * 聯絡電話 */ onlinePhone?: string; /** * 店址 */ onlineAddress?: Address; /** * 店址經緯度,用於外送距離計算 */ onlineAddressLonLat?: number[]; /** * 線上店營業時間 */ onlineOpeningHours?: DayOfWeekTimePeriod[]; /** * 線上店營業時間設定方式,無值時應視為 OnlineOpeningHoursSettingType.shared */ onlineOpeningHoursSettingType?: OnlineOpeningHoursSettingType; /** * 依服務類型設定的線上店營業時間。deliveryByStore 跟隨 ServeType.takeout。 */ onlineOpeningHoursByServeType?: Partial>; /** * 因應政府「網路銷售營業人新制」上路,營業人資訊揭露 */ onlineBusinessEntity?: { name: string; idNumber: string; }; /** * 橫幅 */ onlineBannerConfig?: GalleryConfig; /** * 點餐公告 */ onlineOrderAnnouncement?: MultiLanguageText; /** * 結帳公告 */ onlineCheckoutAnnouncement?: MultiLanguageText; /** * 關閉訂單備註輸入 */ onlineOrderNoteHidden?: boolean; /** 線上點餐訂單備註必填 */ onlineOrderNoteRequired?: boolean; /** 線上點餐訂單備註 placeholder */ onlineOrderNotePlaceholder?: MultiLanguageText; /** 線上點餐顧客姓名顯示覆寫值;未設定時依服務類型使用系統預設。 */ onlineCustomerNameDisplay?: boolean; /** 線上點餐顧客姓名必填覆寫值;未設定時依服務類型使用系統預設。 */ onlineCustomerNameRequired?: boolean; /** 線上點餐顧客電話顯示覆寫值;未設定時依服務類型使用系統預設。 */ onlineCustomerPhoneDisplay?: boolean; /** 線上點餐顧客電話必填覆寫值;未設定時依服務類型使用系統預設。 */ onlineCustomerPhoneRequired?: boolean; /** * 關閉訂單品項備註輸入 */ onlineOrderItemNoteHidden?: boolean; /** * 關閉統編輸入,無值時應視為 true */ onlineBuyerIdInputHidden?: boolean; /** * 暫時停止營業直到onlineUntilOpen (時間戳記) * 設很久(約100年後)為永久停業; null的話,看openingHours判斷是否營業中 * 使用 lambda func `realTimeSwitch` 來更新此 property */ onlineUntilOpen?: number; /** * 是否使用線上點餐 */ onlineEnabled?: boolean; /** * 外帶外送線上點餐支付方式 */ onlinePaymentConfigs?: PaymentConfig[]; /** * 內用線上點餐支付方式 */ onlineDineInPaymentConfigs?: PaymentConfig[]; /** * 線上點餐預計等待時間(分) */ onlineEstimatedReadyForPickupTime?: number; /** 線上點餐開放預訂;此為外帶/外送設定,內用桌不沿用,見 OnlineTableOrderOverride。 */ onlineReserveEnabled?: boolean; /** * 線上點餐最多可提前預訂天數(以今天為第 0 天的偏移量,非天數計數)。 * 可選日期上界 = 今天 + N 天(含當日);N=0 表示只能訂今天,N=7 表示含今天共 8 天。 * 此為外帶/外送設定,內用桌不沿用,見 OnlineTableOrderOverride。 */ onlineAvailableReservedDays?: number; /** 線上點餐停用立即取餐;undefined / false 均表示可立即取餐。 */ soImmediatePickupDisabled?: boolean; /** * 最少需提前預訂天數(以今天為第 0 天的偏移量)。 * 可選日期下界 = 今天 + N 天,該日可選(閉區間);比較粒度為日曆日(moment 'day')。 * undefined / 0 均表示今天起可預訂。 */ soReserveMinDays?: number; /** 線上點餐開放外送;此為外帶/外送設定,內用桌不沿用,見 OnlineTableOrderOverride。 */ onlineStoreDeliveryEnabled?: boolean; /** 線上點餐外送費 */ onlineStoreDeliveryCharge?: number; /** 線上點餐免外送費訂單金額門檻 */ onlineStoreDeliveryFreeThresholdAmount?: number; /** 最大外送距離(km) */ onlineStoreDeliveryDistanceLimit?: number; /** 外送預留時間:餐點備餐完成後到送達的分鐘區間;未設定時前台不顯示預估送達時間。 */ onlineStoreDeliveryEta?: DeliveryMinutesRange | null; /** * 外送費設定。新欄位優先於舊版的 onlineStoreDelivery* 欄位; * 舊欄位會持續保留,以相容尚未進入外送設定頁的門市。 */ deliveryFeeConfig?: DeliveryFeeConfig; /** LINE LIFF ID */ onlineLiffId?: string; /** Cognito user pool 登入的 OIDC provider */ onlineAvailableFederatedProvider?: string; /** 是否開放訪客點餐 */ onlineAvailableGuest?: boolean; /** * @deprecated 應改用 `onlineUserPoolWebClientIdV2` * * 線上點餐登入UserPoolWebClientId * 單店設定 */ onlineUserPoolWebClientId?: string; /** * 線上點餐登入UserPoolWebClientIdV2 * 單店設定,用來覆蓋 Brand 的 UserPoolWebClientId */ onlineUserPoolWebClientIdV2?: string; /** * 是否啟用集點 * 單店設定,用來覆蓋 Brand 的 StorePointsEnabled */ onlineStorePointsEnabled?: boolean; /** * 點數廠商 * 單店設定,用來覆蓋 Brand 的 StorePointsProvider */ onlineStorePointsProvider?: PointProvider; /** * 點數名稱 * 單店設定,用來覆蓋 Brand 的 StorePointsName */ onlineStorePointsName?: string; /** 品牌 */ brandNo?: string; brand?: Brand; /** * 優惠券功能 * 單店設定,此外Brand目前沒有這個設定 */ onlineStoreCouponsEnabled?: boolean; /** 加入購物車時,是否與相同品相合併 */ onlineMergeSameItem?: boolean; /** 線上點餐與 KIOSK 是否顯示商品剩餘可售數量(兩者共用) */ onlineShowRemainingQty?: boolean; /** 剩餘可售數量小於等於此值才顯示;null/undefined 代表有追蹤數量就顯示 */ onlineShowRemainingQtyThreshold?: number | null; /** 內用服務費 1~100(%) undefined為關閉 */ dineInServiceChargePercent?: number; /** 外帶服務費 1~100(%) undefined為關閉 */ takeoutServiceChargePercent?: number; /** * 服務費計算基準,無值時預設subtotal * "subtotal": serviceCharge = (subtotal * servicePercent) * "subtotal+discount": serviceCharge = ((subtotal+discount) * servicePercent) */ serviceBase?: "subtotal" | "subtotal+discount"; } export declare enum PointProvider { Posky = "Posky", MitwellSubsidy = "MitwellSubsidy" } export interface SimpleStore { id: string; name: string; createdAt: number; company: CompanyEnum; } export interface GalleryConfig { imageUrls: string[]; delay: number; videoUrls?: string[]; } export interface AccountConfig { id: string; receiptPrintingRuleId: string; } export interface TimeInfo { storeId: string; lastSynchronizedAt: number; lastModifiedAt: number; } export interface FlowConfig { [ServeType.takeout]: OrderStatusAlert; } export interface OrderStatusAlert { /** 出單後,狀態設定為confirmed(適合餐點已經事先做好的店) */ autoConfirm: boolean; /** 結帳後自動完成訂單(單子消失在pos上) */ autoLeave: boolean; /** Kiosk接單後POS自動接受 */ autoAccept: boolean; /** 未出單狀態超過x秒警示 */ newTimeAlert: number; /** 廚房準備中狀態超過x秒警示 */ prepareTimeAlert: number; /** 廚房出餐完成狀態超過x秒警示 */ completeTimeAlert: number; /** 超過x秒未離店警示 */ leaveTimeAlert: number; } export interface Address { city: string; district: string; zipCode?: number; address?: string; note?: string; /** 地址座標,格式為 [longitude, latitude]。 */ lonLat?: [number, number]; } export declare type DeliveryFeeMode = 'fixed' | 'tiered'; /** 依直線配送距離的計費級距;upTo 為此級距的上限(公里)。 */ export interface DeliveryDistanceTier { upTo: number; fee: number; } /** 訂單滿額之外送費折抵。discount 為 FREE 時代表免外送費。 */ export interface DeliveryAmountTier { amount: number; discount: number | 'FREE'; } export interface DeliveryFeeConfig { /** 取件地址來源:店家基本資料或線上點餐地址。 */ origin: 'store' | 'online'; /** 超過此距離(公里)即不提供外送。 */ maxDistanceKm: number; mode: DeliveryFeeMode; /** mode 為 fixed 時使用的固定外送費。 */ fee?: number; /** mode 為 tiered 時使用的距離級距,必須依 upTo 遞增。 */ distanceTiers?: DeliveryDistanceTier[]; /** 依訂單商品小計(折扣後)折抵外送費的級距。 */ amountTiers?: DeliveryAmountTier[]; } /** 以分鐘表示的時間區間,例如外送預留時間 20~40 分鐘。 */ export interface DeliveryMinutesRange { min: number; max: number; } export interface DayOfWeekTimePeriod { /** 每週星期幾 */ dayOfWeek: number[]; /** 每天幾點到幾點 * eg: ['1700', '2200'], */ timePeriod: string[]; } export interface StoreTemplateItemMutation { entityName: StoreTemplateItemEnum; entityId: string; } export interface StoreInvoiceConfig { invoiceProvider?: InvoiceProvider; enableInvoice: boolean; officeId: string; tax: Tax; clientConfigs?: StoreInvoiceClientConfig[]; } export interface StoreInvoiceClientConfig { clientId: string; apiKey: string; }