@pisell/pisellos 2.2.264 → 2.2.266

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/model/strategy/adapter/dataVariant/adapter.d.ts +50 -0
  2. package/dist/model/strategy/adapter/dataVariant/adapter.js +167 -0
  3. package/dist/model/strategy/adapter/dataVariant/evaluator.d.ts +89 -0
  4. package/dist/model/strategy/adapter/dataVariant/evaluator.js +780 -0
  5. package/dist/model/strategy/adapter/dataVariant/examples.d.ts +39 -0
  6. package/dist/model/strategy/adapter/dataVariant/examples.js +277 -0
  7. package/dist/model/strategy/adapter/dataVariant/index.d.ts +4 -0
  8. package/dist/model/strategy/adapter/dataVariant/index.js +4 -0
  9. package/dist/model/strategy/adapter/dataVariant/type.d.ts +148 -0
  10. package/dist/model/strategy/adapter/dataVariant/type.js +54 -0
  11. package/dist/model/strategy/adapter/index.d.ts +4 -0
  12. package/dist/model/strategy/adapter/index.js +5 -1
  13. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +16 -10
  14. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +2 -1
  15. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +1 -1
  16. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +32 -1
  17. package/dist/modules/Discount/index.d.ts +5 -2
  18. package/dist/modules/Discount/index.js +30 -7
  19. package/dist/modules/Discount/types.d.ts +4 -0
  20. package/dist/modules/Order/index.d.ts +41 -10
  21. package/dist/modules/Order/index.js +1379 -810
  22. package/dist/modules/Order/payment-utils.d.ts +26 -0
  23. package/dist/modules/Order/payment-utils.js +225 -0
  24. package/dist/modules/Order/types.d.ts +49 -1
  25. package/dist/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  26. package/dist/modules/Order/utils/orderCollectionIdentity.js +410 -0
  27. package/dist/modules/Order/utils.d.ts +4 -3
  28. package/dist/modules/Order/utils.js +61 -64
  29. package/dist/modules/Payment/index.d.ts +2 -0
  30. package/dist/modules/Payment/index.js +78 -49
  31. package/dist/modules/Payment/types.d.ts +26 -24
  32. package/dist/modules/Payment/types.js +2 -0
  33. package/dist/modules/Product/types.d.ts +22 -0
  34. package/dist/modules/ProductList/index.d.ts +1 -1
  35. package/dist/modules/ProductList/index.js +4 -2
  36. package/dist/modules/ProductList/types.d.ts +2 -0
  37. package/dist/modules/Rules/index.d.ts +2 -8
  38. package/dist/modules/Rules/index.js +55 -9
  39. package/dist/modules/Rules/types.d.ts +10 -1
  40. package/dist/server/index.d.ts +71 -0
  41. package/dist/server/index.js +2504 -1187
  42. package/dist/server/modules/order/index.d.ts +56 -5
  43. package/dist/server/modules/order/index.js +1718 -834
  44. package/dist/server/modules/order/types.d.ts +15 -3
  45. package/dist/server/modules/order/types.js +1 -1
  46. package/dist/server/modules/products/index.d.ts +31 -8
  47. package/dist/server/modules/products/index.js +549 -390
  48. package/dist/server/modules/products/types.d.ts +18 -0
  49. package/dist/solution/BaseSales/index.d.ts +67 -4
  50. package/dist/solution/BaseSales/index.js +1476 -792
  51. package/dist/solution/BaseSales/types.d.ts +6 -1
  52. package/dist/solution/BaseSales/types.js +1 -1
  53. package/dist/solution/BaseSales/utils/cartPromotion.js +19 -7
  54. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +9 -4
  55. package/dist/solution/BaseSales/utils/parseSalesResponse.js +6 -8
  56. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +14 -1
  57. package/dist/solution/BookingByStep/index.d.ts +1 -1
  58. package/dist/solution/BookingTicket/index.js +94 -54
  59. package/dist/solution/BookingTicket/types.d.ts +2 -0
  60. package/dist/solution/Sales/index.d.ts +1 -0
  61. package/dist/solution/Sales/index.js +10 -2
  62. package/dist/solution/ShopDiscount/index.js +15 -14
  63. package/dist/utils/payment-number.d.ts +9 -0
  64. package/dist/utils/payment-number.js +69 -0
  65. package/lib/model/strategy/adapter/dataVariant/adapter.d.ts +50 -0
  66. package/lib/model/strategy/adapter/dataVariant/adapter.js +149 -0
  67. package/lib/model/strategy/adapter/dataVariant/evaluator.d.ts +89 -0
  68. package/lib/model/strategy/adapter/dataVariant/evaluator.js +583 -0
  69. package/lib/model/strategy/adapter/dataVariant/examples.d.ts +39 -0
  70. package/lib/model/strategy/adapter/dataVariant/examples.js +293 -0
  71. package/lib/model/strategy/adapter/dataVariant/index.d.ts +4 -0
  72. package/lib/model/strategy/adapter/dataVariant/index.js +38 -0
  73. package/lib/model/strategy/adapter/dataVariant/type.d.ts +148 -0
  74. package/lib/model/strategy/adapter/dataVariant/type.js +31 -0
  75. package/lib/model/strategy/adapter/index.d.ts +4 -0
  76. package/lib/model/strategy/adapter/index.js +13 -2
  77. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +5 -0
  78. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +1 -0
  79. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +1 -1
  80. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +23 -2
  81. package/lib/modules/Discount/index.d.ts +5 -2
  82. package/lib/modules/Discount/index.js +23 -3
  83. package/lib/modules/Discount/types.d.ts +4 -0
  84. package/lib/modules/Order/index.d.ts +41 -10
  85. package/lib/modules/Order/index.js +514 -122
  86. package/lib/modules/Order/payment-utils.d.ts +26 -0
  87. package/lib/modules/Order/payment-utils.js +224 -0
  88. package/lib/modules/Order/types.d.ts +49 -1
  89. package/lib/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  90. package/lib/modules/Order/utils/orderCollectionIdentity.js +418 -0
  91. package/lib/modules/Order/utils.d.ts +4 -3
  92. package/lib/modules/Order/utils.js +26 -20
  93. package/lib/modules/Payment/index.d.ts +2 -0
  94. package/lib/modules/Payment/index.js +33 -12
  95. package/lib/modules/Payment/types.d.ts +26 -24
  96. package/lib/modules/Product/types.d.ts +22 -0
  97. package/lib/modules/ProductList/index.d.ts +1 -1
  98. package/lib/modules/ProductList/index.js +4 -2
  99. package/lib/modules/ProductList/types.d.ts +2 -0
  100. package/lib/modules/Rules/index.d.ts +2 -8
  101. package/lib/modules/Rules/index.js +57 -6
  102. package/lib/modules/Rules/types.d.ts +10 -1
  103. package/lib/server/index.d.ts +71 -0
  104. package/lib/server/index.js +1002 -52
  105. package/lib/server/modules/order/index.d.ts +56 -5
  106. package/lib/server/modules/order/index.js +798 -148
  107. package/lib/server/modules/order/types.d.ts +15 -3
  108. package/lib/server/modules/products/index.d.ts +31 -8
  109. package/lib/server/modules/products/index.js +134 -35
  110. package/lib/server/modules/products/types.d.ts +18 -0
  111. package/lib/solution/BaseSales/index.d.ts +67 -4
  112. package/lib/solution/BaseSales/index.js +496 -50
  113. package/lib/solution/BaseSales/types.d.ts +6 -1
  114. package/lib/solution/BaseSales/utils/cartPromotion.js +13 -1
  115. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +9 -4
  116. package/lib/solution/BaseSales/utils/parseSalesResponse.js +4 -5
  117. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +8 -0
  118. package/lib/solution/BookingByStep/index.d.ts +1 -1
  119. package/lib/solution/BookingTicket/index.js +39 -11
  120. package/lib/solution/BookingTicket/types.d.ts +2 -0
  121. package/lib/solution/Sales/index.d.ts +1 -0
  122. package/lib/solution/Sales/index.js +5 -3
  123. package/lib/solution/ShopDiscount/index.js +2 -1
  124. package/lib/utils/payment-number.d.ts +9 -0
  125. package/lib/utils/payment-number.js +64 -0
  126. package/package.json +1 -1
@@ -28,6 +28,10 @@ export interface ProductIdScope {
28
28
  /** 指定商品集合 ID */
29
29
  collectionIds?: number[];
30
30
  }
31
+ export interface ProductSnapshot {
32
+ cover?: ProductData['cover'];
33
+ holder_config?: ProductData['holder_config'];
34
+ }
31
35
  /**
32
36
  * 加载报价单商品价格参数
33
37
  */
@@ -110,6 +114,8 @@ export interface ProductSyncMessage {
110
114
  change_types?: string[];
111
115
  /** 关联商品 ID(product_collection / product_category / product_quotation 变更时携带) */
112
116
  relation_product_ids?: number[];
117
+ /** 关联商品 ID(product_data_variant 变更时携带) */
118
+ product_ids?: number[];
113
119
  message_uuid?: string;
114
120
  timestamp?: string;
115
121
  /** 内部标记:来源频道 key */
@@ -124,6 +130,18 @@ export interface ProductFormatterContext {
124
130
  customer_id?: number | string;
125
131
  priceData?: LoadProductsPriceData[];
126
132
  scheduleModule?: any;
133
+ /** 全量餐牌列表,供智能定价 menu_match 等条件判断使用 */
134
+ menuList?: any[];
135
+ /** 全量日程列表,供智能定价 schedule_match 等条件判断使用 */
136
+ scheduleList?: any[];
137
+ /** 外部传入的策略上下文,仅承载定价条件,不参与商品集合筛选 */
138
+ strategy_context?: Record<string, any>;
139
+ /** 智能定价评估器,由宿主统一注入到 PisellOS context */
140
+ dataVariantEvaluator?: {
141
+ resolveProducts: (businessData: any) => {
142
+ products: ProductData[];
143
+ };
144
+ };
127
145
  locale?: string;
128
146
  }
129
147
  /**
@@ -2,7 +2,7 @@ import { Module, ModuleOptions, PisellCore } from '../../types';
2
2
  import { BaseModule } from '../../modules/BaseModule';
3
3
  import { BaseSalesOrderProduct, BaseSalesOrderProductIdentity, BaseSalesPaymentStatus, BaseSalesUpdateOrderProductQuantityParams, BaseSalesCalculateProductBookingPriceParams, BaseSalesPriceRecalculationContextChange, BaseSalesProductBookingPriceResult, BaseSalesQuotationCustomerScopeInfo, BaseSalesScanCodeResult } from './types';
4
4
  import { OrderModule } from '../../modules/Order';
5
- import type { AddProductBookingInput, LoadSalesDetailParams, OrderPaymentData, OrderPaymentSource, SendCustomerPayLinkParams, SyncPaymentsToOrderParams, SyncPaymentsToOrderResult, UpdateTempOrderCustomerInput, UpdateOrderBookingParams, UpdateOrderProductParams, OrderTempOrder, OrderSummary, OrderPromotionEvaluator, OrderGiftSelectResolver, OrderUnfulfilledPromotion, OrderLastGiftActions } from '../../modules/Order/types';
5
+ import type { AddProductBookingInput, LoadSalesDetailParams, OrderPaymentData, OrderPaymentUpdateOptions, OrderPaymentUpdateResult, OrderPaymentSource, SendCustomerPayLinkParams, SyncPaymentsToOrderParams, SyncPaymentsToOrderResult, UpdateTempOrderCustomerInput, UpdateOrderBookingParams, UpdateOrderProductParams, OrderTempOrder, OrderSummary, OrderPromotionEvaluator, OrderGiftSelectResolver, OrderUnfulfilledPromotion, OrderLastGiftActions } from '../../modules/Order/types';
6
6
  import type { SubmitPayloadEnhancer } from '../../modules/Order/utils';
7
7
  import type { Discount } from '../../modules/Discount/types';
8
8
  import { RequestPlugin, WindowPlugin } from '../../plugins';
@@ -24,6 +24,19 @@ export interface BaseSalesState {
24
24
  schedule?: ScheduleModule;
25
25
  quotation?: QuotationModule;
26
26
  }
27
+ export interface BaseSalesUpdateOrderPaymentOptions extends OrderPaymentUpdateOptions {
28
+ persistDraft?: boolean;
29
+ submitWhenPaid?: boolean;
30
+ forceSubmitIfPaid?: boolean;
31
+ /** 草稿恢复时,允许将新回调字段合并进已 paid 的支付项。 */
32
+ applyUpdatesWhenPaid?: boolean;
33
+ smallTicketDataFlag?: number;
34
+ }
35
+ export interface BaseSalesUpdateOrderPaymentResult extends OrderPaymentUpdateResult {
36
+ draftResult?: unknown;
37
+ draftError?: unknown;
38
+ syncResult?: SyncPaymentsToOrderResult<any>;
39
+ }
27
40
  export type BaseSalesPrintLocalOrderReceiptParams = string | number;
28
41
  export declare class BaseSalesImpl extends BaseModule implements Module {
29
42
  protected defaultName: string;
@@ -35,6 +48,11 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
35
48
  protected store: BaseSalesState;
36
49
  protected otherParams: Record<string, any>;
37
50
  protected cacheId: string | undefined;
51
+ /**
52
+ * 由已在初始化阶段解析过设备短号的业务解决方案写入。
53
+ * 未设置时,支付编号仍按原逻辑实时读取设备信息。
54
+ */
55
+ protected paymentNumberDevicePrefix: string | null;
38
56
  /**
39
57
  * window / request 暴露为 public:现存外部工具(如 BookingTicket Scan)通过
40
58
  * `solution.window` / `solution.request` 直接访问插件,保持原有契约不破坏。
@@ -49,9 +67,13 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
49
67
  private queuedAutoPaymentSync;
50
68
  private autoPaymentSyncFlushing;
51
69
  private autoPaymentSyncTimer;
52
- private salesDetailLoadInFlight;
70
+ private salesDetailLoadInFlightCount;
71
+ private salesDetailLoadSequence;
72
+ private salesDetailHydrateQueue;
53
73
  private serverOrderChangeUnsubscribe;
54
74
  private serverOrderChangeHydrateInFlight;
75
+ private queuedServerOrderChanges;
76
+ private serverOrderChangeSyncEnabled;
55
77
  constructor(name?: string, version?: string);
56
78
  /**
57
79
  * 子类可覆盖此方法以追加/收敛要注册的子模块。
@@ -73,8 +95,12 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
73
95
  */
74
96
  private logError;
75
97
  private isCurrentSalesOrderRecord;
98
+ setServerOrderChangeSyncEnabled(enabled: boolean): void;
99
+ private queueLatestServerOrderChange;
100
+ private drainQueuedServerOrderChanges;
76
101
  private syncCurrentSalesDetailFromServerOrderChange;
77
102
  private registerServerOrderChangeSync;
103
+ private hydrateLatestLoadedSalesDetail;
78
104
  private hydrateOrderPaymentNames;
79
105
  get payment(): PaymentModule | undefined;
80
106
  private getCurrentOrderCustomerId;
@@ -120,6 +146,13 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
120
146
  */
121
147
  protected readSessionCacheData(): Record<string, any>;
122
148
  protected getAppData<T>(key: string): T | undefined;
149
+ /**
150
+ * 复用业务解决方案初始化时已解析的支付设备短号。
151
+ * 空值会清除缓存,使后续支付恢复实时读取设备信息的兼容路径。
152
+ */
153
+ protected setPaymentNumberDevicePrefix(prefix: unknown): void;
154
+ private getPaymentNumberDevicePrefixSync;
155
+ private getPaymentNumberDevicePrefixAsync;
123
156
  private syncAppDataToTempOrder;
124
157
  initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
125
158
  destroy(): Promise<void>;
@@ -185,12 +218,24 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
185
218
  }): Promise<{
186
219
  productList: Record<string, any>[];
187
220
  discountList: Discount[];
221
+ availableWalletIds: number[];
188
222
  }>;
223
+ getAvailableWalletIds(): number[];
189
224
  bestDiscount(cb?: (result: any) => void): Promise<{
190
225
  productList: Record<string, any>[];
191
226
  discountList: Discount[];
192
227
  }>;
193
228
  getDiscountList(): Discount[];
229
+ /** 读取 Discount 模块原始券列表(未经过 bookingTime 等过滤)。 */
230
+ getOriginalDiscountList(): Discount[];
231
+ /**
232
+ * 同步写入 Discount 模块的 discountList / originalDiscountList。
233
+ * 供 Holder 补全等场景在 OS store 层更新 machinecode holder 字段。
234
+ */
235
+ replaceDiscountStoreLists(params: {
236
+ discountList: Discount[];
237
+ originalDiscountList?: Discount[];
238
+ }): Promise<void>;
194
239
  scanPromotionCode(code: string, customerId?: number): Promise<BaseSalesScanCodeResult>;
195
240
  setDiscountSelected(params: {
196
241
  discountId: number;
@@ -220,6 +265,13 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
220
265
  confirmPendingVoucherPayments?: boolean;
221
266
  enhancePayload?: SubmitPayloadEnhancer;
222
267
  }): Promise<T>;
268
+ saveSalesOrderDraft<T = any>(params?: {
269
+ platform?: string;
270
+ businessCode?: string;
271
+ channel?: string;
272
+ type?: string;
273
+ enhancePayload?: SubmitPayloadEnhancer;
274
+ }): Promise<T>;
223
275
  submitTempOrderAsync<T = any>(params?: {
224
276
  payments?: OrderPaymentSource[];
225
277
  paymentStatus?: BaseSalesPaymentStatus;
@@ -238,16 +290,27 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
238
290
  private queueLatestAutoPaymentSync;
239
291
  private scheduleQueuedAutoPaymentSyncFlush;
240
292
  private flushQueuedAutoPaymentSync;
241
- /** 追加单个支付项到当前订单。 */
293
+ /**
294
+ * 同步兼容入口。无法等待 IoT 短号时,按调用当下的 device_id 或 LOCAL 生成。
295
+ */
242
296
  addOrderPayment(payment: OrderPaymentSource): OrderPaymentData[];
297
+ /**
298
+ * 创建新支付项时优先使用业务解决方案初始化阶段缓存的设备短号;
299
+ * 未缓存的通用 BaseSales 保持实时读取设备信息的兼容语义。
300
+ */
301
+ addOrderPaymentAsync(payment: OrderPaymentSource): Promise<OrderPaymentData[]>;
302
+ private addOrderPaymentWithDevicePrefix;
243
303
  /** 更新当前订单中的指定支付项。 */
244
- updateOrderPayment(paymentIdentity: string | number, updates: Partial<OrderPaymentData> & Record<string, any>): OrderPaymentData[];
304
+ updateOrderPayment(paymentIdentity: string | number, updates: Partial<OrderPaymentData> & Record<string, any>, options?: BaseSalesUpdateOrderPaymentOptions): Promise<BaseSalesUpdateOrderPaymentResult>;
245
305
  /** 删除当前订单中的指定支付项。 */
246
306
  deleteOrderPayment(paymentIdentity: string | number): OrderPaymentData[];
247
307
  /** 覆盖 wallet pass 支付项,同时保留普通支付项。 */
248
308
  updateVoucherOrderPayments(payments: OrderPaymentSource[], options?: {
249
309
  status?: 'paid' | 'payment_pending';
250
310
  }): OrderPaymentData[];
311
+ updateVoucherOrderPaymentsAsync(payments: OrderPaymentSource[], options?: {
312
+ status?: 'paid' | 'payment_pending';
313
+ }): Promise<OrderPaymentData[]>;
251
314
  confirmPendingVoucherPayments(): OrderPaymentData[];
252
315
  discardPendingVoucherPayments(): OrderPaymentData[];
253
316
  private getWalletProductList;