@pisell/pisellos 2.2.276 → 2.2.800

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 (119) hide show
  1. package/dist/core/index.d.ts +0 -2
  2. package/dist/core/index.js +0 -7
  3. package/dist/model/strategy/adapter/promotion/adapter.d.ts +0 -4
  4. package/dist/model/strategy/adapter/promotion/adapter.js +0 -23
  5. package/dist/model/strategy/adapter/promotion/evaluator.d.ts +0 -17
  6. package/dist/model/strategy/adapter/promotion/evaluator.js +6 -279
  7. package/dist/model/strategy/adapter/promotion/examples.d.ts +0 -86
  8. package/dist/model/strategy/adapter/promotion/examples.js +0 -99
  9. package/dist/model/strategy/adapter/promotion/index.d.ts +1 -1
  10. package/dist/model/strategy/adapter/promotion/index.js +0 -9
  11. package/dist/model/strategy/adapter/promotion/type.d.ts +2 -90
  12. package/dist/model/strategy/adapter/promotion/type.js +0 -45
  13. package/dist/modules/OpenData/index.d.ts +0 -2
  14. package/dist/modules/OpenData/index.js +0 -8
  15. package/dist/modules/Order/index.d.ts +8 -28
  16. package/dist/modules/Order/index.js +496 -808
  17. package/dist/modules/Order/types.d.ts +1 -35
  18. package/dist/modules/Order/utils/orderCollectionIdentity.js +2 -7
  19. package/dist/modules/Order/utils.js +6 -10
  20. package/dist/modules/Payment/index.d.ts +0 -2
  21. package/dist/modules/Payment/index.js +49 -78
  22. package/dist/modules/Payment/types.d.ts +25 -104
  23. package/dist/modules/Payment/types.js +0 -17
  24. package/dist/modules/Payment/walletpass.d.ts +1 -38
  25. package/dist/modules/Payment/walletpass.js +114 -917
  26. package/dist/modules/Rules/index.d.ts +0 -3
  27. package/dist/modules/Rules/index.js +70 -100
  28. package/dist/server/index.d.ts +0 -25
  29. package/dist/server/index.js +1069 -2001
  30. package/dist/server/modules/index.d.ts +1 -1
  31. package/dist/server/modules/order/index.d.ts +4 -70
  32. package/dist/server/modules/order/index.js +728 -1816
  33. package/dist/server/modules/order/types.d.ts +3 -25
  34. package/dist/server/modules/order/types.js +1 -7
  35. package/dist/server/utils/small-ticket.js +2 -1
  36. package/dist/solution/BaseSales/index.d.ts +5 -104
  37. package/dist/solution/BaseSales/index.js +436 -1767
  38. package/dist/solution/BaseSales/types.d.ts +1 -55
  39. package/dist/solution/BaseSales/types.js +1 -2
  40. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +1 -3
  41. package/dist/solution/BaseSales/utils/cartPromotion.js +31 -90
  42. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +1 -6
  43. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +4 -7
  44. package/dist/solution/BookingByStep/index.d.ts +1 -1
  45. package/dist/solution/BookingTicket/index.d.ts +5 -21
  46. package/dist/solution/BookingTicket/index.js +56 -139
  47. package/dist/solution/BookingTicket/types.d.ts +0 -1
  48. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +0 -8
  49. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +83 -173
  50. package/dist/solution/Sales/index.d.ts +0 -2
  51. package/dist/solution/Sales/index.js +4 -26
  52. package/dist/solution/ScanOrder/index.js +20 -31
  53. package/dist/solution/VenueBooking/index.d.ts +0 -1
  54. package/dist/solution/VenueBooking/index.js +19 -30
  55. package/dist/types/index.d.ts +0 -1
  56. package/lib/core/index.d.ts +0 -2
  57. package/lib/core/index.js +0 -4
  58. package/lib/model/strategy/adapter/promotion/adapter.d.ts +0 -4
  59. package/lib/model/strategy/adapter/promotion/adapter.js +0 -20
  60. package/lib/model/strategy/adapter/promotion/evaluator.d.ts +0 -17
  61. package/lib/model/strategy/adapter/promotion/evaluator.js +0 -235
  62. package/lib/model/strategy/adapter/promotion/examples.d.ts +0 -86
  63. package/lib/model/strategy/adapter/promotion/examples.js +0 -91
  64. package/lib/model/strategy/adapter/promotion/index.d.ts +1 -1
  65. package/lib/model/strategy/adapter/promotion/index.js +0 -2
  66. package/lib/model/strategy/adapter/promotion/type.d.ts +2 -90
  67. package/lib/model/strategy/adapter/promotion/type.js +0 -2
  68. package/lib/modules/OpenData/index.d.ts +0 -2
  69. package/lib/modules/OpenData/index.js +0 -5
  70. package/lib/modules/Order/index.d.ts +8 -28
  71. package/lib/modules/Order/index.js +69 -231
  72. package/lib/modules/Order/types.d.ts +1 -35
  73. package/lib/modules/Order/utils/orderCollectionIdentity.js +0 -3
  74. package/lib/modules/Order/utils.js +4 -11
  75. package/lib/modules/Payment/index.d.ts +0 -2
  76. package/lib/modules/Payment/index.js +12 -33
  77. package/lib/modules/Payment/types.d.ts +25 -104
  78. package/lib/modules/Payment/types.js +0 -1
  79. package/lib/modules/Payment/walletpass.d.ts +1 -38
  80. package/lib/modules/Payment/walletpass.js +21 -730
  81. package/lib/modules/Rules/index.d.ts +0 -3
  82. package/lib/modules/Rules/index.js +9 -38
  83. package/lib/server/index.d.ts +0 -25
  84. package/lib/server/index.js +31 -726
  85. package/lib/server/modules/index.d.ts +1 -1
  86. package/lib/server/modules/order/index.d.ts +4 -70
  87. package/lib/server/modules/order/index.js +69 -818
  88. package/lib/server/modules/order/types.d.ts +3 -25
  89. package/lib/server/modules/order/types.js +0 -1
  90. package/lib/server/utils/small-ticket.js +1 -1
  91. package/lib/solution/BaseSales/index.d.ts +5 -104
  92. package/lib/solution/BaseSales/index.js +27 -858
  93. package/lib/solution/BaseSales/types.d.ts +1 -55
  94. package/lib/solution/BaseSales/types.js +1 -2
  95. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +1 -3
  96. package/lib/solution/BaseSales/utils/cartPromotion.js +12 -63
  97. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +1 -6
  98. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +3 -4
  99. package/lib/solution/BookingByStep/index.d.ts +1 -1
  100. package/lib/solution/BookingTicket/index.d.ts +5 -21
  101. package/lib/solution/BookingTicket/index.js +13 -64
  102. package/lib/solution/BookingTicket/types.d.ts +0 -1
  103. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +0 -8
  104. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +5 -37
  105. package/lib/solution/Sales/index.d.ts +0 -2
  106. package/lib/solution/Sales/index.js +6 -20
  107. package/lib/solution/ScanOrder/index.js +0 -8
  108. package/lib/solution/VenueBooking/index.d.ts +0 -1
  109. package/lib/solution/VenueBooking/index.js +0 -8
  110. package/lib/types/index.d.ts +0 -1
  111. package/package.json +1 -1
  112. package/dist/modules/Order/payment-utils.d.ts +0 -26
  113. package/dist/modules/Order/payment-utils.js +0 -225
  114. package/dist/utils/payment-number.d.ts +0 -9
  115. package/dist/utils/payment-number.js +0 -69
  116. package/lib/modules/Order/payment-utils.d.ts +0 -26
  117. package/lib/modules/Order/payment-utils.js +0 -224
  118. package/lib/utils/payment-number.d.ts +0 -9
  119. package/lib/utils/payment-number.js +0 -64
@@ -27,8 +27,6 @@ export declare class RulesModule extends BaseModule implements Module, RulesModu
27
27
  }): {
28
28
  isAvailable: boolean;
29
29
  discountList: Discount[];
30
- /** 完整规则计算后的列表;调用方可用于保留暂时无适用商品的扫码卡券。 */
31
- evaluatedDiscountList?: Discount[];
32
30
  productList: any[];
33
31
  unavailableReason?: UnavailableReason;
34
32
  };
@@ -37,7 +35,6 @@ export declare class RulesModule extends BaseModule implements Module, RulesModu
37
35
  excludeDiscountListByType(discountList: Discount[], type: string): Discount[];
38
36
  /** 手动改价场景:去掉 promotion,保留 type=product 等行内折扣 */
39
37
  resolveDiscountListForManualOverride(discountList: Discount[]): Discount[];
40
- private isItemRewardProductDiscount;
41
38
  private getUnavailableReason;
42
39
  calcDiscount({ discountList, productList, holders, isFormSubject, orderTotalAmount }: {
43
40
  discountList: Discount[];
@@ -94,7 +94,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
94
94
  productList
95
95
  };
96
96
  }
97
- if (productList.length > 0 && productList.every((item) => {
97
+ if (productList.every((item) => {
98
98
  var _a;
99
99
  const product = this.hooks.getProduct(item);
100
100
  return product.booking_id && (((_a = product.discount_list) == null ? void 0 : _a.length) || product.total == 0);
@@ -152,7 +152,6 @@ var RulesModule = class extends import_BaseModule.BaseModule {
152
152
  return {
153
153
  isAvailable: hasApplicableDiscount,
154
154
  discountList: hasApplicableDiscount ? result.discountList : oldDiscountList,
155
- evaluatedDiscountList: result.discountList,
156
155
  productList: hasApplicableDiscount ? result.productList : productList,
157
156
  unavailableReason
158
157
  };
@@ -168,27 +167,13 @@ var RulesModule = class extends import_BaseModule.BaseModule {
168
167
  resolveDiscountListForManualOverride(discountList) {
169
168
  return this.excludeDiscountListByType(discountList, "promotion");
170
169
  }
171
- isItemRewardProductDiscount(product) {
172
- var _a;
173
- const discountList = Array.isArray(product == null ? void 0 : product.discount_list) ? product.discount_list : [];
174
- return ((_a = product == null ? void 0 : product._promotion) == null ? void 0 : _a.actionType) === "ITEM_REWARD" && discountList.some(
175
- (item) => {
176
- var _a2, _b;
177
- return (item == null ? void 0 : item.type) === "product" && ((_a2 = item == null ? void 0 : item.metadata) == null ? void 0 : _a2.source) === "promotion" && ((_b = item == null ? void 0 : item.metadata) == null ? void 0 : _b.actionType) === "ITEM_REWARD";
178
- }
179
- );
180
- }
181
170
  // 获取券不可用的原因
182
171
  getUnavailableReason(discountList, productList) {
183
172
  var _a;
184
173
  for (const discount of discountList) {
185
- const bookingTimes = productList.length ? productList.map((item) => {
174
+ for (const item of productList) {
186
175
  const product = this.hooks.getProduct(item);
187
- return ((product == null ? void 0 : product.startDate) || (0, import_dayjs.default)()).format(
188
- "YYYY-MM-DD HH:mm:ss"
189
- );
190
- }) : [(0, import_dayjs.default)().format("YYYY-MM-DD HH:mm:ss")];
191
- for (const bookingTime of bookingTimes) {
176
+ const bookingTime = ((product == null ? void 0 : product.startDate) || (0, import_dayjs.default)()).format("YYYY-MM-DD HH:mm:ss");
192
177
  const filteredList = (0, import_utils.filterDiscountListByBookingTime)([discount], bookingTime);
193
178
  if (filteredList.length === 0) {
194
179
  return import_types.UnavailableReason.TimeLimit;
@@ -320,7 +305,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
320
305
  // 新增商品运行态通常带 _bundle_product_id;订单 hydrate 后只有
321
306
  // bundle_product_id。Change time 必须兼容两种结构,否则 bundle
322
307
  // 子项无法命中折扣卡的 limited_relation_product_data.product_ids。
323
- id: bundleItem.bundle_product_id ?? bundleItem._bundle_product_id ?? bundleItem.product_id,
308
+ id: bundleItem._bundle_product_id ?? bundleItem.bundle_product_id ?? bundleItem.product_id,
324
309
  _id: `${product._id}_bundle_${bundleIndex}`,
325
310
  parentId: product._id,
326
311
  num: bundleItem.num || 1,
@@ -517,9 +502,6 @@ var RulesModule = class extends import_BaseModule.BaseModule {
517
502
  startDate: (_a2 = flatItem.parentProduct) == null ? void 0 : _a2.startDate
518
503
  };
519
504
  }
520
- if (this.isItemRewardProductDiscount(product)) {
521
- return false;
522
- }
523
505
  const isAvailableProduct = flatItem.type === "main" ? !((product == null ? void 0 : product.booking_id) && ((_b = product == null ? void 0 : product.discount_list) == null ? void 0 : _b.length) && ((_c = product == null ? void 0 : product.discount_list) == null ? void 0 : _c.every((d) => d.id && ["good_pass", "discount_card", "product_discount_card"].includes(d.tag || d.type)))) : !((flatItem == null ? void 0 : flatItem.booking_id) && !!((_e = (_d = flatItem == null ? void 0 : flatItem.bundleItem) == null ? void 0 : _d.discount_list) == null ? void 0 : _e.length) && ((_g = (_f = flatItem == null ? void 0 : flatItem.bundleItem) == null ? void 0 : _f.discount_list) == null ? void 0 : _g.every((d) => d.id)));
524
506
  if (!isAvailableProduct) {
525
507
  return false;
@@ -645,7 +627,6 @@ var RulesModule = class extends import_BaseModule.BaseModule {
645
627
  };
646
628
  originProduct = flatItem.originProduct;
647
629
  }
648
- const isItemRewardProductDiscount = this.isItemRewardProductDiscount(product);
649
630
  addModeDiscount.forEach((discount) => {
650
631
  var _a3, _b, _c, _d, _e, _f, _g, _h, _i, _j;
651
632
  const limitedData = discount == null ? void 0 : discount.limited_relation_product_data;
@@ -669,7 +650,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
669
650
  ].includes(discount2.tag || discount2.type)
670
651
  ))) : !((flatItem == null ? void 0 : flatItem.booking_id) && !!((_d = (_c = flatItem == null ? void 0 : flatItem.bundleItem) == null ? void 0 : _c.discount_list) == null ? void 0 : _d.length) && ((_f = (_e = flatItem == null ? void 0 : flatItem.bundleItem) == null ? void 0 : _e.discount_list) == null ? void 0 : _f.every((discount2) => discount2.id)));
671
652
  const isBundleAvailable = this.checkPackageSubItemUsageRules(discount, flatItem);
672
- if (isAvailableProduct && !isItemRewardProductDiscount && isLimitedProduct && timeLimit && isBundleAvailable && ((_g = discount.config) == null ? void 0 : _g.isAvailable)) {
653
+ if (isAvailableProduct && isLimitedProduct && timeLimit && isBundleAvailable && ((_g = discount.config) == null ? void 0 : _g.isAvailable)) {
673
654
  (_h = discountApplicability.get(discount.id)) == null ? void 0 : _h.push(product.id);
674
655
  const applicableProducts = discountApplicableProducts.get(discount.id) || [];
675
656
  const discountType = discount.tag || discount.type;
@@ -785,8 +766,6 @@ var RulesModule = class extends import_BaseModule.BaseModule {
785
766
  }
786
767
  const applicableDiscounts = sortedDiscountList.filter((discount) => {
787
768
  var _a3, _b2, _c2, _d2;
788
- if (this.isItemRewardProductDiscount(product))
789
- return false;
790
769
  const discountType = discount.tag || discount.type;
791
770
  const currentOriginUid = getOriginProductUid(originProduct);
792
771
  const isReapplyEditModeDiscountForProduct = discount.isEditMode && reapplyBookingDiscountProductUids.size > 0 && currentOriginUid && reapplyBookingDiscountProductUids.has(String(currentOriginUid)) && discount.isSelected === true;
@@ -856,17 +835,11 @@ var RulesModule = class extends import_BaseModule.BaseModule {
856
835
  }
857
836
  return false;
858
837
  });
859
- const explicitlySelectedDiscountCard = (options == null ? void 0 : options.isSelected) === true && options.discountId !== void 0 ? applicableDiscounts.find((discount) => {
860
- const discountType = discount.tag || discount.type;
861
- return String(discount.id) === String(options.discountId) && ["discount_card", "product_discount_card"].includes(discountType);
862
- }) : void 0;
863
- const scannedSelectedDiscountCard = applicableDiscounts.find(
838
+ const selectedDiscountCard = applicableDiscounts.find(
864
839
  (n) => n.isScan && n.isSelected && (n.tag || n.type) !== "good_pass"
865
840
  );
866
- const selectedDiscountCard = explicitlySelectedDiscountCard || scannedSelectedDiscountCard;
867
841
  const selectedDiscount = selectedDiscountCard || applicableDiscounts[0];
868
842
  let isManualDiscount = false;
869
- let isItemRewardProductDiscount = false;
870
843
  if (flatItem.type === "main") {
871
844
  isManualDiscount = typeof product.isManualDiscount === "boolean" ? product.isManualDiscount : ((_g = product.discount_list) == null ? void 0 : _g.some((item) => item.type === "product")) || product.total != product.origin_total && (product.bundle || []).every(
872
845
  (item) => {
@@ -877,8 +850,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
877
850
  _i,
878
851
  (item) => item.type === "product"
879
852
  )));
880
- isItemRewardProductDiscount = this.isItemRewardProductDiscount(product);
881
- if (product.inPromotion && !isItemRewardProductDiscount) {
853
+ if (product.inPromotion) {
882
854
  isManualDiscount = false;
883
855
  }
884
856
  } else {
@@ -992,7 +964,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
992
964
  } else {
993
965
  let total = product.inPromotion ? ((_w = product == null ? void 0 : product._promotion) == null ? void 0 : _w.finalPrice) ?? product.origin_total ?? product.total : product.origin_total ?? product.total;
994
966
  let main_product_selling_price = product.price;
995
- if ((product.discount_list || []).some((item) => item.type === "promotion") || isItemRewardProductDiscount || (0, import_lodash_es.isBoolean)(product.vouchersApplicable) && !product.vouchersApplicable) {
967
+ if ((product.discount_list || []).some((item) => item.type === "promotion") || (0, import_lodash_es.isBoolean)(product.vouchersApplicable) && !product.vouchersApplicable) {
996
968
  total = product.total ?? product.origin_total;
997
969
  main_product_selling_price = product.main_product_selling_price ?? main_product_selling_price;
998
970
  }
@@ -1000,8 +972,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
1000
972
  this.hooks.setProduct(originProduct, {
1001
973
  ...isManualDiscount ? {
1002
974
  price: product.price,
1003
- main_product_selling_price: isItemRewardProductDiscount ? main_product_selling_price : product.price,
1004
- ...isItemRewardProductDiscount ? { total } : {}
975
+ main_product_selling_price: product.price
1005
976
  } : {
1006
977
  _id: product._id.split("___")[0] + "___" + index,
1007
978
  total,
@@ -57,7 +57,6 @@ declare class Server {
57
57
  private readonly BOOKING_REMOTE_CACHE_MAX_ENTRIES;
58
58
  private salesSearchSubscribers;
59
59
  private deviceTaskActionsRegistered;
60
- private localPaymentUpdateQueues;
61
60
  private floorPlanQuerySubscribers;
62
61
  private moduleRegistry;
63
62
  constructor(core: PisellCore);
@@ -121,8 +120,6 @@ declare class Server {
121
120
  private handleSyncSalesTask;
122
121
  private runCheckoutSync;
123
122
  private omitCheckoutSyncMode;
124
- private buildRemoteCheckoutData;
125
- private mergeCheckoutSyncPayments;
126
123
  private persistSyncedCheckoutOrder;
127
124
  /**
128
125
  * 将普通层 QuotationModule 的报价单计算能力桥接到 Server Products 模块。
@@ -253,11 +250,6 @@ declare class Server {
253
250
  * 对单个商品 query 订阅者重算并推送(定时路径;不新建 schedule timer)。
254
251
  */
255
252
  private recomputeAndNotifySubscriber;
256
- /**
257
- * 根据餐牌 ID 获取其绑定日程中的全部时间点。
258
- * 商品查询定时器与 schedule-time-points 路由共用此逻辑。
259
- */
260
- private getMenuScheduleTimePoints;
261
253
  /**
262
254
  * query 完成后为 subscriber 同步 schedule 定时器(先 clear 再 schedule)。
263
255
  */
@@ -461,18 +453,6 @@ declare class Server {
461
453
  */
462
454
  private handleUpdateLocalOrder;
463
455
  private handleOrderSalesCheckout;
464
- private handleOrderSalesDraft;
465
- private createLocalPaymentOperationId;
466
- private buildLocalPaymentOrderLogContext;
467
- private isValidLocalPaymentDecimal;
468
- private getInvalidLocalPaymentSurchargeFields;
469
- private buildLocalPaymentSurchargeUpdate;
470
- private handleGetLocalPayment;
471
- private handleUpdateLocalPayment;
472
- private runLocalPaymentUpdateInQueue;
473
- private processLocalPaymentUpdate;
474
- private processSuccessfulLocalPayment;
475
- private sanitizeLocalRecoveryOrder;
476
456
  private handleOrderCheckout;
477
457
  private getDeviceTaskPlugin;
478
458
  private getIdGeneratorPlugin;
@@ -500,13 +480,8 @@ declare class Server {
500
480
  private syncMachinecodeRedeemStatusToLocalOrder;
501
481
  private handleOrderCheckoutSubmit;
502
482
  private handleSyncCheckoutSubmit;
503
- private handleOrderDraftSubmit;
504
483
  private handlePendingSyncCheckoutOrder;
505
484
  private buildPendingSyncCheckoutOrder;
506
- /**
507
- * Android 结账自动小票由当前设备设置控制;其它平台保持原有行为。
508
- */
509
- private shouldAutoPrintCheckoutReceipt;
510
485
  private shouldBuildSmallTicketData;
511
486
  private shouldPrintSyncedOrder;
512
487
  private hasPaymentStatus;