import type { PisellReservationTableRow } from '../types'; import type { FloorRoomCardBooking, FloorRoomCardContactTier, FloorRoomCardData, FloorRoomCardHolder } from './floorRoomCardModel'; /** * Walk-in / 占位:`customer_id`(或 `customer.id`)为 0、1。 * 与「是否展示 order 上 **customer 档案姓名/电话**」一致(见 {@link isRealOrderCustomer}),**不**用于 holder / contacts_info。 */ export declare function isReservationPlaceholderCustomerId(order: Record | undefined): boolean; /** * 平面图/详情卡片展示金额: * - 已付(`paid`):仍用 `summary.total_amount` 与原有回退链,逻辑不变。 * - 需付:`payment_processing` 与 `unpaid` → 优先 `summary.total_amount`,否则 `amount_gap` 再顶层回退; * 其余需付态 → 优先 `summary.amount_gap`,否则 `total_amount` 再顶层回退。 */ export declare function resolveBookingCardAmount(rawBooking: Record, order: Record | undefined, paymentStatusLower: string): string | number; /** 与预约详情 strip 同源:顶层 products 行数优先,否则 summary.product_quantity */ export declare function resolveBookingProductQuantity(rawBooking: Record): number; /** 仅在顶层 `products[]` 存在时返回逐行数量汇总,口径与详情商品列表一致。 */ export declare function resolveBookingProductTotalQuantity(rawBooking: Record): number | undefined; /** * 三层联系人同时解析(holder → contacts_info → customer),与 {@link resolveFloorRoomCardHolder} 各层条件一致; * `customer_id` 为 0/1 时仅不拼 **customer** 层;holder、contacts_info 不受 `customer_id` 影响。 */ export declare function resolveFloorRoomCardContactTiers(b: Record): FloorRoomCardContactTier[] | undefined; /** * 平面图 / 详情弹窗 / 列表联系人:与 Pisell Reservation 统一规则。 * - **holder** / **contacts_info** 与 `customer_id` 无关;仅 **customer** 档案层在 id 为 0、1 时不采用。 * - 顺序:**holder**(`booking.holder` → `holder_data`)→ **contact**(`order.contacts_info`)→ **customer**(`customer_name` / `order.customer`(`display_name` → `nickname` → `first_name`+`last_name`)/ `order.phone`)。 */ export declare function resolveFloorRoomCardHolder(b: Record): FloorRoomCardHolder | undefined; /** 单条 floorMapSourceBookings → 与平面图 RoomCard 一致的 booking 模型 */ export declare function rawToBooking(b: Record, index: number): FloorRoomCardBooking; /** * 将合并后的桌位行转为 RoomCard 数据:优先使用 {@link PisellReservationTableRow.floorMapSourceBookings} 展示当前时刻下的多条预约时段。 */ export declare function mapPisellReservationRowToFloorRoomCardData(row: PisellReservationTableRow, roomTitle: string): FloorRoomCardData; /** * 与 `bookingDetailOrderStripFromRaw` 的 `stripBookingId` 一致: * `booking_id` → `id` → `order.shop_full_order_number` → `order.order_number`。 */ export declare function resolveBookingStripIdForUi(raw: Record): string; /** * 详情弹窗 RoomCard 顶栏:预约标识 `booking_id` → `booking_uid` → `id`,均无则 `—`。 */ export declare function resolveBookingIdForHeader(raw: Record): string; /** * 预约详情弹窗:完全基于「这一条 booking raw」(`sales.getResourceBookingItem` 返回的元素, * 与平面图传入的 `floorMapSourceBookings` 子项格式同源)构造 RoomCard 数据。 * * 设计原则: * - `bookings` 始终为 `[rawToBooking(raw, 0)]`,**不**再走 `mapPisellReservationRowToFloorRoomCardData` * 里基于 `tableRow.cardStatus` / `floorMapSourceBookings` status 的判定,避免「completed / * canceled / no_show 等非 occupied/reserved」状态导致 `bookings` 退化为空数组。 * - `status` 严格按 `raw.status`:`occupied` → `occupied`,其余(含 `reserved` / 历史完成 / * 取消等)→ `reserved`,让小条始终展示,且历史记录以中性预约色呈现。 * - `sub_status` 由 booking 自身字段(`timeoutTime` / `lateTime` / `order_payment_status`)推导, * 不依赖 `tableRow` 上派生过的 host 进度状态,与「完全依赖接口数据」一致。 * - `main_field` / `capacity` 取自 `tableRow`(桌位属性,raw 不一定带);视觉上 Modal 透传 * `hideHeader` / `hideHeaderCapacity`,二者主要参与数据完整性而非 header 渲染。 */ export declare function buildDetailModalRoomCardData(raw: Record, tableRow: PisellReservationTableRow | null | undefined): FloorRoomCardData;