@pisell/pisellos 2.2.273 → 2.2.275

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 (74) hide show
  1. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  2. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +12 -10
  3. package/dist/modules/Order/index.d.ts +7 -6
  4. package/dist/modules/Order/index.js +217 -115
  5. package/dist/modules/Order/types.d.ts +23 -3
  6. package/dist/modules/Order/types.js +11 -0
  7. package/dist/modules/Payment/index.js +1 -1
  8. package/dist/modules/Payment/types.d.ts +81 -4
  9. package/dist/modules/Payment/types.js +18 -3
  10. package/dist/modules/Payment/walletpass.d.ts +38 -1
  11. package/dist/modules/Payment/walletpass.js +917 -114
  12. package/dist/modules/Rules/index.d.ts +2 -0
  13. package/dist/modules/Rules/index.js +78 -64
  14. package/dist/modules/SalesSummary/utils.js +7 -1
  15. package/dist/server/index.d.ts +4 -0
  16. package/dist/server/index.js +27 -18
  17. package/dist/server/modules/index.d.ts +1 -1
  18. package/dist/server/modules/order/index.d.ts +16 -0
  19. package/dist/server/modules/order/index.js +964 -776
  20. package/dist/server/modules/order/types.d.ts +14 -0
  21. package/dist/server/modules/order/types.js +6 -0
  22. package/dist/solution/BaseSales/index.d.ts +80 -15
  23. package/dist/solution/BaseSales/index.js +1498 -444
  24. package/dist/solution/BaseSales/types.d.ts +55 -1
  25. package/dist/solution/BaseSales/types.js +2 -1
  26. package/dist/solution/BaseSales/utils/cartPromotion.js +8 -3
  27. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +6 -3
  28. package/dist/solution/BookingByStep/index.d.ts +1 -1
  29. package/dist/solution/BookingTicket/index.d.ts +1 -1
  30. package/dist/solution/BookingTicket/index.js +12 -3
  31. package/dist/solution/BookingTicket/types.d.ts +4 -0
  32. package/dist/solution/BookingTicket/utils/cartView.js +44 -32
  33. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +8 -0
  34. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +173 -83
  35. package/dist/solution/Sales/index.d.ts +1 -0
  36. package/dist/solution/Sales/index.js +16 -2
  37. package/dist/solution/VenueBooking/index.d.ts +1 -0
  38. package/lib/model/strategy/adapter/promotion/index.js +0 -51
  39. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +3 -1
  40. package/lib/modules/Order/index.d.ts +7 -6
  41. package/lib/modules/Order/index.js +127 -20
  42. package/lib/modules/Order/types.d.ts +23 -3
  43. package/lib/modules/Payment/index.js +1 -1
  44. package/lib/modules/Payment/types.d.ts +81 -4
  45. package/lib/modules/Payment/types.js +4 -3
  46. package/lib/modules/Payment/walletpass.d.ts +38 -1
  47. package/lib/modules/Payment/walletpass.js +730 -21
  48. package/lib/modules/Rules/index.d.ts +2 -0
  49. package/lib/modules/Rules/index.js +24 -14
  50. package/lib/modules/SalesSummary/utils.js +5 -1
  51. package/lib/server/index.d.ts +4 -0
  52. package/lib/server/index.js +14 -6
  53. package/lib/server/modules/index.d.ts +1 -1
  54. package/lib/server/modules/order/index.d.ts +16 -0
  55. package/lib/server/modules/order/index.js +140 -4
  56. package/lib/server/modules/order/types.d.ts +14 -0
  57. package/lib/server/modules/order/types.js +1 -0
  58. package/lib/solution/BaseSales/index.d.ts +80 -15
  59. package/lib/solution/BaseSales/index.js +712 -48
  60. package/lib/solution/BaseSales/types.d.ts +55 -1
  61. package/lib/solution/BaseSales/types.js +2 -1
  62. package/lib/solution/BaseSales/utils/cartPromotion.js +8 -2
  63. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +3 -2
  64. package/lib/solution/BookingByStep/index.d.ts +1 -1
  65. package/lib/solution/BookingTicket/index.d.ts +1 -1
  66. package/lib/solution/BookingTicket/index.js +4 -1
  67. package/lib/solution/BookingTicket/types.d.ts +4 -0
  68. package/lib/solution/BookingTicket/utils/cartView.js +43 -30
  69. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +8 -0
  70. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +37 -5
  71. package/lib/solution/Sales/index.d.ts +1 -0
  72. package/lib/solution/Sales/index.js +15 -3
  73. package/lib/solution/VenueBooking/index.d.ts +1 -0
  74. package/package.json +1 -1
@@ -568,6 +568,19 @@ export interface OrderChangedPayload {
568
568
  /** 触发来源,便于订阅者区分 pubsub / 远端覆盖 / 清空等场景 */
569
569
  source?: string;
570
570
  }
571
+ export type RemoteProductMembershipChangeSource = 'pubsub.bodyUpsert' | 'pubsub.httpRefresh';
572
+ /**
573
+ * 远端订单快照相对本地订单产生商品成员增删时的广播载荷。
574
+ * 只表达商品行成员关系变化,不包含数量、价格、备注等字段级修改。
575
+ */
576
+ export interface RemoteProductMembershipChangedPayload {
577
+ order_id: OrderId;
578
+ source: RemoteProductMembershipChangeSource;
579
+ added_product_keys: string[];
580
+ removed_product_keys: string[];
581
+ previous_product_count: number;
582
+ current_product_count: number;
583
+ }
571
584
  /**
572
585
  * OrderSyncMessage - pubsub 同步消息结构
573
586
  */
@@ -605,5 +618,6 @@ export interface OrderState {
605
618
  export declare enum OrderHooks {
606
619
  onOrdersLoaded = "order:onOrdersLoaded",
607
620
  onOrdersChanged = "order:onOrdersChanged",
621
+ onRemoteProductMembershipChanged = "order:onRemoteProductMembershipChanged",
608
622
  onOrdersSyncCompleted = "order:onOrdersSyncCompleted"
609
623
  }
@@ -135,6 +135,11 @@
135
135
  * const changedOrders = payload.changedOrders
136
136
  */
137
137
 
138
+ /**
139
+ * 远端订单快照相对本地订单产生商品成员增删时的广播载荷。
140
+ * 只表达商品行成员关系变化,不包含数量、价格、备注等字段级修改。
141
+ */
142
+
138
143
  /**
139
144
  * OrderSyncMessage - pubsub 同步消息结构
140
145
  */
@@ -149,6 +154,7 @@
149
154
  export var OrderHooks = /*#__PURE__*/function (OrderHooks) {
150
155
  OrderHooks["onOrdersLoaded"] = "order:onOrdersLoaded";
151
156
  OrderHooks["onOrdersChanged"] = "order:onOrdersChanged";
157
+ OrderHooks["onRemoteProductMembershipChanged"] = "order:onRemoteProductMembershipChanged";
152
158
  OrderHooks["onOrdersSyncCompleted"] = "order:onOrdersSyncCompleted";
153
159
  return OrderHooks;
154
160
  }({});
@@ -1,15 +1,15 @@
1
1
  import { Module, ModuleOptions, PisellCore } from '../../types';
2
2
  import { BaseModule } from '../../modules/BaseModule';
3
- import { BaseSalesOrderProduct, BaseSalesOrderProductIdentity, BaseSalesPaymentStatus, BaseSalesUpdateOrderProductQuantityParams, BaseSalesCalculateProductBookingPriceParams, BaseSalesPriceRecalculationContextChange, BaseSalesProductBookingPriceResult, BaseSalesQuotationCustomerScopeInfo, BaseSalesScanCodeResult } from './types';
3
+ import { BaseSalesOrderProduct, BaseSalesOrderProductIdentity, BaseSalesPaymentStatus, BaseSalesUpdateOrderProductQuantityParams, BaseSalesCalculateProductBookingPriceParams, BaseSalesPriceRecalculationContextChange, BaseSalesProductBookingPriceResult, BaseSalesQuotationCustomerScopeInfo, BaseSalesScanCodeResult, BaseSalesCashPaymentConfig, BaseSalesPayCashParams, BaseSalesPayCashResult, BaseSalesCommitPaymentMethodParams, BaseSalesCommitPaymentMethodResult, BaseSalesConfirmWalletPaymentResult } from './types';
4
4
  import { OrderModule } from '../../modules/Order';
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';
5
+ import type { AddProductBookingInput, AddProductToOrderOptions, LoadSalesDetailParams, OrderPaymentData, OrderPaymentUpdateOptions, OrderPaymentUpdateResult, OrderPaymentSource, SendCustomerPayLinkParams, SyncPaymentsToOrderParams, SyncPaymentsToOrderResult, UpdateTempOrderCustomerInput, UpdateOrderBookingParams, UpdateOrderProductParams, OrderTempOrder, OrderSummary, OrderPromotionEvaluator, OrderGiftSelectResolver, OrderUnfulfilledPromotion, OrderLastGiftActions, RemoveProductsFromOrderOptions, ReplaceTempOrderOptions } 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';
9
9
  export * from './types';
10
10
  import { ProductList } from '../../modules/ProductList';
11
11
  import { PaymentModule } from '../../modules/Payment';
12
- import type { PaymentMethod } from '../../modules/Payment/types';
12
+ import type { PaymentMethod, RoundingResult, WalletAssetId, WalletAssetsBehaviorOptions, WalletAssetsSnapshot, WalletAssetsState, WalletAssetSelectionSource, ScanWalletAssetResult } from '../../modules/Payment/types';
13
13
  import type { SalesSummaryModule } from '../../modules/SalesSummary';
14
14
  import type { ScheduleModule } from '../../modules/Schedule';
15
15
  import { QuotationModule } from '../../modules/Quotation';
@@ -69,6 +69,7 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
69
69
  private autoPaymentSyncTimer;
70
70
  private salesDetailLoadInFlightCount;
71
71
  private salesDetailLoadSequence;
72
+ private walletAssetsRefreshSequence;
72
73
  private salesDetailHydrateQueue;
73
74
  private serverOrderChangeUnsubscribe;
74
75
  private serverOrderChangeHydrateInFlight;
@@ -108,6 +109,16 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
108
109
  private applyQuotationScheduleResolver;
109
110
  private loadQuotationForPriceQuery;
110
111
  private getPriceQueryProductId;
112
+ /**
113
+ * Change Time / customer reprice 必须沿用商品列表的渠道口径。
114
+ * SalesSdk Provider 通常将渠道存为 platform,因此不能只读取 otherParams.channel。
115
+ */
116
+ private getPriceQueryChannel;
117
+ /**
118
+ * /product/query 的智能定价评估只读取 strategy_context;
119
+ * application_code 仅作为接口兼容字段,不能替代 channel / business_code。
120
+ */
121
+ private getPriceQueryStrategyContext;
111
122
  private getPriceQuerySchedule;
112
123
  private loadProductsForPriceQuery;
113
124
  private loadProductForPriceQuery;
@@ -179,7 +190,7 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
179
190
  /** 获取附加费用(运费/服务费/税费等)。 */
180
191
  getSurcharges(): ISalesSurcharge[];
181
192
  getTempOrder(): OrderTempOrder | null;
182
- replaceTempOrder(tempOrder: OrderTempOrder): Promise<OrderTempOrder>;
193
+ replaceTempOrder(tempOrder: OrderTempOrder, options?: ReplaceTempOrderOptions): Promise<OrderTempOrder>;
183
194
  getOrderIdentity(): import("../../modules/Order/types").OrderIdentitySnapshot | null;
184
195
  getOrderSnapshot(): import("../../modules/Order/types").OrderSnapshot | null;
185
196
  getOrderSyncState(): import("../../modules/Order/types").OrderSyncState;
@@ -314,9 +325,40 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
314
325
  confirmPendingVoucherPayments(): OrderPaymentData[];
315
326
  discardPendingVoucherPayments(): OrderPaymentData[];
316
327
  private getWalletProductList;
328
+ private buildWalletInitBusinessData;
317
329
  initWalletData(params?: {
318
330
  order_wait_pay_amount?: number;
319
331
  }): Promise<import("../../modules/Payment").WalletInitializationResult>;
332
+ private getCommittedWalletAssets;
333
+ private publishWalletAssetsState;
334
+ private syncSelectedWalletAssets;
335
+ /** 读取购物车与 Shared Checkout 共用的钱包资产状态。 */
336
+ getWalletAssetsState(): WalletAssetsState;
337
+ /** 导出 Shared Checkout 跨运行时恢复所需的钱包状态与搜索缓存。 */
338
+ exportWalletAssetsSnapshot(): WalletAssetsSnapshot;
339
+ /** 配置仅影响 Wallet Assets,不改变 Promotion/Voucher 选择流程。 */
340
+ configureWalletAssetsBehavior(options: WalletAssetsBehaviorOptions): void;
341
+ /**
342
+ * 恢复 Shared Checkout 钱包快照,并把选择重新同步为订单 pending payment。
343
+ */
344
+ importWalletAssetsSnapshot(snapshot: WalletAssetsSnapshot): Promise<WalletAssetsState>;
345
+ /**
346
+ * 基于当前订单快照刷新钱包资产。商品变化保留并重验选择;客户变化强制清空。
347
+ */
348
+ refreshWalletAssets(params?: {
349
+ order_wait_pay_amount?: number;
350
+ preserveSelection?: boolean;
351
+ }): Promise<WalletAssetsState>;
352
+ /** 选择或取消单张钱包资产,并立即同步 pending wallet payments。 */
353
+ selectWalletAsset(params: {
354
+ assetId: WalletAssetId;
355
+ selected: boolean;
356
+ source?: WalletAssetSelectionSource;
357
+ }): Promise<WalletAssetsState>;
358
+ /** 扫码精确查券;仅可用资产会被自动选中。 */
359
+ scanWalletAsset(code: string): Promise<ScanWalletAssetResult>;
360
+ /** 清空全部未确认钱包选择,已支付钱包项由 Order 模块继续保留。 */
361
+ clearWalletAssetSelection(): Promise<WalletAssetsState>;
320
362
  /**
321
363
  * 更新当前订单客户字段。
322
364
  *
@@ -333,16 +375,39 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
333
375
  getPaymentMethodsAsync(): Promise<PaymentMethod[]>;
334
376
  /** 同步读取初始化时缓存的支付方式列表。 */
335
377
  getPaymentMethods(): PaymentMethod[];
336
- /** 轻量舍入能力,供现金支付 UI 计算 rounding_amount。 */
378
+ private findCashPaymentMethod;
379
+ private getPendingWalletPaymentAmount;
380
+ /** 读取现金 action 所需的支付方式、待付金额和快捷金额。 */
381
+ getCashPaymentConfig(): Promise<BaseSalesCashPaymentConfig>;
382
+ /**
383
+ * 确认足额覆盖订单的 pending Wallet 支付并提交订单。
384
+ *
385
+ * Order 模块在构造提交参数时将 pending voucher 转为 paid;只有提交成功后
386
+ * 才同步 Wallet committed 状态。失败时恢复调用前 payments,允许用户重试。
387
+ */
388
+ confirmWalletPayment<T = Record<string, any>>(): Promise<BaseSalesConfirmWalletPaymentResult<T>>;
389
+ /**
390
+ * 购物车现金直付:写入现金记录并等待支付同步完成。
391
+ * 同步失败会恢复调用前 payments(包含 Wallet pending 状态)。
392
+ */
393
+ payCash(params: BaseSalesPayCashParams): Promise<BaseSalesPayCashResult>;
394
+ /**
395
+ * 提交一次已由支付设备确认成功的非 Wallet 支付。
396
+ *
397
+ * 与 addOrderPayment 不同,本入口不会启动后台 fire-and-forget 同步;调用方会等待
398
+ * 本次 payment、当前 pending Wallet 以及订单提交共同完成。任何同步失败都会恢复
399
+ * 调用前的 payments 与 payment_status,便于 UI 安全解锁并重试。
400
+ */
401
+ commitPaymentMethodPayment(params: BaseSalesCommitPaymentMethodParams): Promise<BaseSalesCommitPaymentMethodResult>;
402
+ /**
403
+ * 按当前店铺的现金舍入配置计算金额,供现金支付 UI 使用。
404
+ *
405
+ * 舍入开关取自 CASHMANUAL 支付方式;舍入规则取自
406
+ * otherParams.order_rounding_setting,金额算法统一由 PaymentModule 维护。
407
+ */
337
408
  roundAmount(params: {
338
409
  amount: string | number;
339
- interval?: string | number;
340
- rule?: 'standard_rounding' | 'standard_down' | 'always_up' | 'always_down' | string;
341
- }): {
342
- originalAmount: string;
343
- roundedAmount: string;
344
- roundingDifference: string;
345
- };
410
+ }): Promise<RoundingResult>;
346
411
  /**
347
412
  * 发送支付链接。
348
413
  *
@@ -359,7 +424,7 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
359
424
  getQuotationCustomerScopeInfo(): BaseSalesQuotationCustomerScopeInfo;
360
425
  shouldRecalculateProductBookingPricesForContextChange(params: BaseSalesPriceRecalculationContextChange): boolean;
361
426
  calculateProductBookingPrices(paramsList: BaseSalesCalculateProductBookingPriceParams[]): Promise<BaseSalesProductBookingPriceResult[]>;
362
- addProductToOrder(product: Partial<BaseSalesOrderProduct> & BaseSalesOrderProductIdentity, booking?: AddProductBookingInput): Promise<import("../../modules/Order/types").OrderProduct[]>;
427
+ addProductToOrder(product: Partial<BaseSalesOrderProduct> & BaseSalesOrderProductIdentity, booking?: AddProductBookingInput, options?: AddProductToOrderOptions): Promise<import("../../modules/Order/types").OrderProduct[]>;
363
428
  updateOrderProduct(params: UpdateOrderProductParams): Promise<import("../../modules/Order/types").OrderProduct[]>;
364
429
  updateOrderProducts(paramsList: UpdateOrderProductParams[]): Promise<import("../../modules/Order/types").OrderProduct[]>;
365
430
  updateOrderProductQuantity(params: BaseSalesUpdateOrderProductQuantityParams): Promise<import("../../modules/Order/types").OrderProduct[]>;
@@ -375,8 +440,8 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
375
440
  * @example
376
441
  * await baseSales.removeProductsFromOrder([identityA, identityB]);
377
442
  */
378
- removeProductsFromOrder(identities: BaseSalesOrderProductIdentity[]): Promise<import("../../modules/Order/types").OrderProduct[]>;
379
- removeProductFromOrder(identity: BaseSalesOrderProductIdentity): Promise<import("../../modules/Order/types").OrderProduct[]>;
443
+ removeProductsFromOrder(identities: BaseSalesOrderProductIdentity[], options?: RemoveProductsFromOrderOptions): Promise<import("../../modules/Order/types").OrderProduct[]>;
444
+ removeProductFromOrder(identity: BaseSalesOrderProductIdentity, options?: RemoveProductsFromOrderOptions): Promise<import("../../modules/Order/types").OrderProduct[]>;
380
445
  /**
381
446
  * 注入促销评估器到底层 OrderModule。
382
447
  *