@pisell/pisellos 0.10.58 → 0.10.60

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 (81) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +1 -0
  3. package/dist/inventory/index.d.ts +92 -0
  4. package/dist/inventory/index.js +500 -0
  5. package/dist/model/strategy/adapter/promotion/index.js +0 -9
  6. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +3 -1
  7. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +25 -2
  8. package/dist/modules/Order/holderRelations.d.ts +14 -0
  9. package/dist/modules/Order/holderRelations.js +154 -0
  10. package/dist/modules/Order/index.d.ts +21 -4
  11. package/dist/modules/Order/index.js +1453 -1060
  12. package/dist/modules/Order/types.d.ts +24 -1
  13. package/dist/modules/Order/types.js +2 -0
  14. package/dist/modules/Order/utils/discountProductLineIdentity.d.ts +1 -1
  15. package/dist/modules/Order/utils/discountProductLineIdentity.js +142 -7
  16. package/dist/modules/Order/utils/orderCollectionIdentity.js +24 -10
  17. package/dist/modules/Order/utils.d.ts +1 -1
  18. package/dist/modules/Order/utils.js +35 -9
  19. package/dist/modules/ProductList/index.d.ts +1 -3
  20. package/dist/modules/ProductList/index.js +120 -192
  21. package/dist/modules/ProductList/types.d.ts +0 -8
  22. package/dist/modules/ProductList/types.js +0 -2
  23. package/dist/server/index.js +18 -12
  24. package/dist/server/modules/order/index.d.ts +4 -0
  25. package/dist/server/modules/order/index.js +255 -190
  26. package/dist/server/modules/order/types.d.ts +3 -0
  27. package/dist/shared/receipt/small-ticket.js +17 -0
  28. package/dist/shared/sales/loadSalesOrderSnapshot.js +1 -1
  29. package/dist/solution/BaseSales/index.d.ts +8 -0
  30. package/dist/solution/BaseSales/index.js +1478 -1233
  31. package/dist/solution/BaseSales/types.d.ts +2 -1
  32. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +3 -1
  33. package/dist/solution/BaseSales/utils/parseSalesResponse.js +7 -3
  34. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +12 -3
  35. package/dist/solution/BookingByStep/index.d.ts +1 -1
  36. package/dist/solution/BookingTicket/index.d.ts +1 -13
  37. package/dist/solution/BookingTicket/index.js +7 -4
  38. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +6 -2
  39. package/dist/solution/UnifiedBookingSales/index.d.ts +1 -7
  40. package/dist/solution/UnifiedBookingSales/index.js +446 -586
  41. package/lib/index.d.ts +1 -0
  42. package/lib/index.js +12 -0
  43. package/lib/inventory/index.d.ts +92 -0
  44. package/lib/inventory/index.js +280 -0
  45. package/lib/model/strategy/adapter/promotion/index.js +46 -1
  46. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +3 -1
  47. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +16 -1
  48. package/lib/modules/Order/holderRelations.d.ts +14 -0
  49. package/lib/modules/Order/holderRelations.js +98 -0
  50. package/lib/modules/Order/index.d.ts +21 -4
  51. package/lib/modules/Order/index.js +155 -31
  52. package/lib/modules/Order/types.d.ts +24 -1
  53. package/lib/modules/Order/types.js +1 -0
  54. package/lib/modules/Order/utils/discountProductLineIdentity.d.ts +1 -1
  55. package/lib/modules/Order/utils/discountProductLineIdentity.js +51 -2
  56. package/lib/modules/Order/utils/orderCollectionIdentity.js +5 -0
  57. package/lib/modules/Order/utils.d.ts +1 -1
  58. package/lib/modules/Order/utils.js +27 -6
  59. package/lib/modules/ProductList/index.d.ts +1 -3
  60. package/lib/modules/ProductList/index.js +22 -31
  61. package/lib/modules/ProductList/types.d.ts +0 -8
  62. package/lib/modules/ProductList/types.js +0 -1
  63. package/lib/server/index.js +6 -0
  64. package/lib/server/modules/order/index.d.ts +4 -0
  65. package/lib/server/modules/order/index.js +46 -4
  66. package/lib/server/modules/order/types.d.ts +3 -0
  67. package/lib/shared/receipt/small-ticket.js +15 -0
  68. package/lib/shared/sales/loadSalesOrderSnapshot.js +1 -1
  69. package/lib/solution/BaseSales/index.d.ts +8 -0
  70. package/lib/solution/BaseSales/index.js +121 -9
  71. package/lib/solution/BaseSales/types.d.ts +2 -1
  72. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +3 -1
  73. package/lib/solution/BaseSales/utils/parseSalesResponse.js +4 -0
  74. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +7 -0
  75. package/lib/solution/BookingByStep/index.d.ts +1 -1
  76. package/lib/solution/BookingTicket/index.d.ts +1 -13
  77. package/lib/solution/BookingTicket/index.js +4 -1
  78. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +7 -1
  79. package/lib/solution/UnifiedBookingSales/index.d.ts +1 -7
  80. package/lib/solution/UnifiedBookingSales/index.js +12 -80
  81. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  import type { ScheduleEventResource } from '../resource/types';
2
+ import type { OrderHolderRelation } from '../../../modules/Order/types';
2
3
  /**
3
4
  * Order 模块主键类型(对齐标准 Sales 协议的 order_id)
4
5
  */
@@ -448,6 +449,8 @@ export interface OrderData {
448
449
  contacts_info?: unknown[];
449
450
  /** 订单级主体参数 */
450
451
  holder?: Record<string, unknown> | null;
452
+ /** 非预约商品 Holder 关系完整快照;缺席表示本次回包未提供 */
453
+ holder_relations?: OrderHolderRelation[];
451
454
  /** 订单前端扩展快照 */
452
455
  order_meta_list?: {
453
456
  point_cards_snapshot?: Array<{
@@ -20,6 +20,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
20
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
21
21
  import dayjs from 'dayjs';
22
22
  import Decimal from 'decimal.js';
23
+ import { getProductHolderRelations, hasProductBooking } from "../../modules/Order/holderRelations";
23
24
  import { isFulfillmentTimingBooking } from "../../modules/Order/pickupTiming";
24
25
  import { resolveInvoiceDataVisibility } from "./templateVisibility";
25
26
  var DEFAULT_LOCALES = ['en', 'zh_CN'];
@@ -115,6 +116,7 @@ var LABELS = {
115
116
  bookingDateTime: 'Date & time',
116
117
  bookingResource: 'Resource',
117
118
  bookingHolder: 'Holder',
119
+ productHolder: 'Holder',
118
120
  orderDiscount: 'Order discount',
119
121
  manualDiscount: 'Manual discount',
120
122
  manualMarkup: 'Manual markup',
@@ -160,6 +162,7 @@ var LABELS = {
160
162
  bookingDateTime: '日期和时间',
161
163
  bookingResource: '资源',
162
164
  bookingHolder: '预约人',
165
+ productHolder: '持有人',
163
166
  orderDiscount: '整单折扣',
164
167
  manualDiscount: '手动折扣',
165
168
  manualMarkup: '手动加价',
@@ -205,6 +208,7 @@ var LABELS = {
205
208
  bookingDateTime: '日期和時間',
206
209
  bookingResource: '資源',
207
210
  bookingHolder: '預約人',
211
+ productHolder: '持有人',
208
212
  orderDiscount: '整單折扣',
209
213
  manualDiscount: '手動折扣',
210
214
  manualMarkup: '手動加價',
@@ -248,6 +252,7 @@ var LABELS = {
248
252
  bookingDateTime: '日時',
249
253
  bookingResource: 'リソース',
250
254
  bookingHolder: '予約者',
255
+ productHolder: '利用者',
251
256
  orderDiscount: '注文割引',
252
257
  manualDiscount: '手動割引',
253
258
  manualMarkup: '手動値上げ',
@@ -292,6 +297,7 @@ var LABELS = {
292
297
  bookingDateTime: 'Data e hora',
293
298
  bookingResource: 'Recurso',
294
299
  bookingHolder: 'Titular',
300
+ productHolder: 'Titular',
295
301
  orderDiscount: 'Desconto do pedido',
296
302
  manualDiscount: 'Desconto manual',
297
303
  manualMarkup: 'Acréscimo manual',
@@ -461,6 +467,17 @@ function buildProducts(order, locale, productMap) {
461
467
  quantity: quantity,
462
468
  originalPrice: originalPrice
463
469
  });
470
+ var holderName = hasProductBooking(product) ? '' : getProductHolderRelations(order, product).map(function (relation) {
471
+ var _relation$metadata;
472
+ return getLocalizedValue((_relation$metadata = relation.metadata) === null || _relation$metadata === void 0 ? void 0 : _relation$metadata.name, locale).trim();
473
+ }).filter(Boolean).join(', ');
474
+ if (holderName) {
475
+ // 复用 Web Invoice / 原生均支持的文本扩展行,不混入金额或商品备注。
476
+ extensionList.push(_objectSpread(_objectSpread({}, receiptKey(rawProduct, 'product-holder', 'text')), {}, {
477
+ item: "".concat(label(locale, 'productHolder'), ": ").concat(holderName),
478
+ value: ''
479
+ }));
480
+ }
464
481
  var productNote = resolveProductNote(product, locale);
465
482
  var allergy = isPresentId(productUid) ? allergyByProductUid.get(String(productUid).trim()) || '' : '';
466
483
  var basePrice = resolveProductBasePrice(product);
@@ -4,7 +4,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
- export var SALES_ORDER_RELATIONS = ['products', 'bookings', 'payments', 'customer', 'summary', 'contacts_info', 'order_meta_list', 'refunds', 'notes'];
7
+ export var SALES_ORDER_RELATIONS = ['products', 'bookings', 'payments', 'customer', 'summary', 'contacts_info', 'order_meta_list', 'refunds', 'notes', 'holder_relations'];
8
8
 
9
9
  /** Shared transport contract; remote callers use their host's /h5 prefix. */
10
10
  export function loadSalesOrderSnapshot(request, params) {
@@ -1,3 +1,4 @@
1
+ import { InventoryController, type CheckoutRuntimeSnapshot } from '../../inventory';
1
2
  import { Module, ModuleOptions, PisellCore } from '../../types';
2
3
  import { BaseModule } from '../../modules/BaseModule';
3
4
  import { BaseSalesOrderProduct, BaseSalesOrderProductIdentity, BaseSalesPaymentStatus, BaseSalesSubmitSalesOrderParams, BaseSalesUpdateOrderProductQuantityParams, BaseSalesCalculateProductBookingPriceParams, BaseSalesPriceRecalculationContextChange, BaseSalesProductBookingPriceResult, BaseSalesQuotationCustomerScopeInfo, BaseSalesScanCodeResult, BaseSalesCashPaymentOptions, BaseSalesCashPaymentConfig, BaseSalesPayCashParams, BaseSalesPayCashResult, BaseSalesCommitPaymentMethodParams, BaseSalesCommitPaymentMethodResult, BaseSalesConfirmWalletPaymentResult } from './types';
@@ -49,6 +50,8 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
49
50
  protected appPlugin: AppPlugin;
50
51
  protected store: BaseSalesState;
51
52
  protected otherParams: Record<string, any>;
53
+ getInventory(): InventoryController | undefined;
54
+ prepareCheckout(signal?: AbortSignal): Promise<CheckoutRuntimeSnapshot | undefined>;
52
55
  protected cacheId: string | undefined;
53
56
  /**
54
57
  * 由已在初始化阶段解析过设备短号的业务解决方案写入。
@@ -187,6 +190,7 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
187
190
  * 可覆盖此方法并把未识别的 name 委托给 `super.createSubModule(name)`。
188
191
  */
189
192
  protected createSubModule(moduleName: string): Module | null;
193
+ private inventoryOrderHooks?;
190
194
  protected getSubModuleHooks(moduleName: string): any;
191
195
  /**
192
196
  * 构造传给 BaseSales 子模块的完整运行态参数,保证初始化和后续同步语义一致。
@@ -224,7 +228,11 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
224
228
  private isActiveVirtualSettlementOrder;
225
229
  private isHistoricalVirtualSettlementOrder;
226
230
  private syncAppDataToTempOrder;
231
+ private initialization?;
232
+ /** Hosts can await readiness without changing Core's synchronous registration API. */
233
+ whenInitialized(): Promise<void>;
227
234
  initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
235
+ private initializeSalesRuntime;
228
236
  destroy(): Promise<void>;
229
237
  /**
230
238
  * 加载销售订单到统一 tempOrder 工作区。