@pisell/pisellos 2.3.73 → 2.3.75

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 (296) hide show
  1. package/dist/core/index.d.ts +7 -0
  2. package/dist/core/index.js +111 -71
  3. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  4. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  5. package/dist/model/strategy/strategy-example.js +5 -19
  6. package/dist/modules/Cart/index.js +0 -3
  7. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  8. package/dist/modules/Date/index.js +1 -5
  9. package/dist/modules/Discount/index.js +2 -4
  10. package/dist/modules/OpenData/index.js +0 -2
  11. package/dist/modules/Order/index.d.ts +1 -1
  12. package/dist/modules/Order/index.js +36 -64
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Quotation/index.d.ts +6 -0
  15. package/dist/modules/Quotation/index.js +75 -19
  16. package/dist/modules/Rules/index.js +1 -4
  17. package/dist/modules/Schedule/index.js +0 -1
  18. package/dist/modules/Schedule/utils.js +0 -1
  19. package/dist/modules/Step/index.js +0 -1
  20. package/dist/plugins/request.d.ts +1 -0
  21. package/dist/plugins/request.js +1 -4
  22. package/dist/plugins/window.js +2 -6
  23. package/dist/server/index.d.ts +8 -2
  24. package/dist/server/index.js +303 -269
  25. package/dist/server/modules/floor-plan/index.d.ts +4 -0
  26. package/dist/server/modules/floor-plan/index.js +240 -98
  27. package/dist/server/modules/menu/index.js +75 -59
  28. package/dist/server/modules/order/index.d.ts +17 -7
  29. package/dist/server/modules/order/index.js +421 -211
  30. package/dist/server/modules/products/index.d.ts +8 -2
  31. package/dist/server/modules/products/index.js +191 -117
  32. package/dist/server/modules/quotation/index.js +29 -38
  33. package/dist/server/modules/resource/index.js +24 -17
  34. package/dist/server/modules/schedule/index.js +27 -35
  35. package/dist/server/utils/product.js +0 -1
  36. package/dist/solution/BaseSales/index.js +38 -41
  37. package/dist/solution/BookingByStep/index.d.ts +1 -1
  38. package/dist/solution/BookingByStep/index.js +7 -59
  39. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  40. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  41. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  42. package/dist/solution/BookingTicket/index.js +0 -2
  43. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  44. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  45. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  46. package/dist/solution/BuyTickets/index.js +9 -12
  47. package/dist/solution/Checkout/index.js +177 -252
  48. package/dist/solution/Checkout/utils/index.js +4 -16
  49. package/dist/solution/RegisterAndLogin/index.js +30 -76
  50. package/dist/solution/ScanOrder/index.js +50 -60
  51. package/dist/solution/ShopDiscount/index.js +2 -7
  52. package/dist/solution/VenueBooking/index.js +45 -55
  53. package/dist/utils/task.js +15 -18
  54. package/dist/utils/watch.js +0 -1
  55. package/lib/apis/picoding.js +2 -0
  56. package/lib/core/index.d.ts +7 -0
  57. package/lib/core/index.js +149 -131
  58. package/lib/effects/index.js +46 -57
  59. package/lib/index.js +82 -49
  60. package/lib/model/index.js +14 -21
  61. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  62. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  63. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  64. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  65. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  66. package/lib/model/strategy/adapter/index.js +100 -64
  67. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  68. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  69. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  70. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  71. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  72. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  73. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  74. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  75. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  76. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  77. package/lib/model/strategy/adapter/type.js +4 -16
  78. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  79. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  80. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  81. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  82. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  83. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  84. package/lib/model/strategy/engine.js +270 -168
  85. package/lib/model/strategy/index.js +49 -34
  86. package/lib/model/strategy/strategy-example.js +243 -239
  87. package/lib/model/strategy/type.js +100 -40
  88. package/lib/modules/Account/index.js +39 -53
  89. package/lib/modules/Account/types.js +20 -33
  90. package/lib/modules/AccountList/index.js +116 -154
  91. package/lib/modules/AccountList/types.js +30 -31
  92. package/lib/modules/AccountList/utils.js +18 -30
  93. package/lib/modules/BaseModule.js +23 -42
  94. package/lib/modules/BookingContext/index.js +158 -136
  95. package/lib/modules/BookingContext/types.js +46 -32
  96. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  97. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  98. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  99. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  100. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  101. package/lib/modules/BookingContext/utils/index.js +124 -41
  102. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  103. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  104. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  105. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  106. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  107. package/lib/modules/BookingContext/utils/resources.js +209 -167
  108. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  109. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  110. package/lib/modules/Cart/index.js +170 -124
  111. package/lib/modules/Cart/types.js +46 -51
  112. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  113. package/lib/modules/Cart/utils/cartDate.js +56 -61
  114. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  115. package/lib/modules/Cart/utils/cartNote.js +27 -32
  116. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  117. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  118. package/lib/modules/Cart/utils/cartResource.js +70 -78
  119. package/lib/modules/Cart/utils/changePrice.js +22 -50
  120. package/lib/modules/Cart/utils/index.js +106 -48
  121. package/lib/modules/Customer/constants.js +13 -34
  122. package/lib/modules/Customer/index.js +235 -172
  123. package/lib/modules/Customer/types.js +38 -35
  124. package/lib/modules/Date/index.js +116 -115
  125. package/lib/modules/Date/types.js +16 -28
  126. package/lib/modules/Date/utils.js +174 -123
  127. package/lib/modules/Discount/index.js +122 -127
  128. package/lib/modules/Discount/types.js +9 -31
  129. package/lib/modules/Guests/index.js +30 -56
  130. package/lib/modules/Guests/types.js +23 -33
  131. package/lib/modules/Holder/index.js +209 -189
  132. package/lib/modules/Holder/types.js +4 -16
  133. package/lib/modules/Holder/utils.js +20 -49
  134. package/lib/modules/OpenData/index.js +70 -76
  135. package/lib/modules/OpenData/types.js +4 -16
  136. package/lib/modules/OpenData/utils.js +44 -78
  137. package/lib/modules/Order/index.d.ts +1 -1
  138. package/lib/modules/Order/index.js +1713 -2118
  139. package/lib/modules/Order/payment-utils.js +77 -120
  140. package/lib/modules/Order/types.js +88 -35
  141. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  142. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  143. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  144. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  145. package/lib/modules/Order/utils.js +814 -647
  146. package/lib/modules/Payment/cash.js +20 -33
  147. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  148. package/lib/modules/Payment/eftpos.js +16 -30
  149. package/lib/modules/Payment/index.js +532 -399
  150. package/lib/modules/Payment/mx51.js +1 -0
  151. package/lib/modules/Payment/types.js +230 -108
  152. package/lib/modules/Payment/utils.js +52 -51
  153. package/lib/modules/Payment/walletpass.js +485 -660
  154. package/lib/modules/Product/index.js +51 -46
  155. package/lib/modules/Product/types.js +4 -16
  156. package/lib/modules/Product/utils.js +32 -33
  157. package/lib/modules/ProductList/index.js +113 -123
  158. package/lib/modules/ProductList/types.js +9 -31
  159. package/lib/modules/Quotation/index.d.ts +6 -0
  160. package/lib/modules/Quotation/index.js +110 -103
  161. package/lib/modules/Quotation/types.js +4 -16
  162. package/lib/modules/Resource/index.js +27 -59
  163. package/lib/modules/Resource/types.js +22 -32
  164. package/lib/modules/Resource/utils.js +30 -38
  165. package/lib/modules/ResourcePlanner/index.js +25 -23
  166. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  167. package/lib/modules/ResourcePlanner/planner.js +589 -770
  168. package/lib/modules/ResourcePlanner/types.js +10 -29
  169. package/lib/modules/Rules/index.js +1218 -959
  170. package/lib/modules/Rules/types.js +17 -40
  171. package/lib/modules/SalesSummary/index.js +85 -90
  172. package/lib/modules/SalesSummary/types.js +4 -16
  173. package/lib/modules/SalesSummary/utils.js +355 -430
  174. package/lib/modules/ScanOrderLogger/index.js +59 -79
  175. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  176. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  177. package/lib/modules/ScanOrderLogger/types.js +4 -16
  178. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  179. package/lib/modules/Schedule/index.js +100 -114
  180. package/lib/modules/Schedule/type.js +4 -16
  181. package/lib/modules/Schedule/types.js +4 -16
  182. package/lib/modules/Schedule/utils.js +433 -291
  183. package/lib/modules/Step/index.js +40 -52
  184. package/lib/modules/Step/tyeps.js +4 -16
  185. package/lib/modules/Summary/index.js +66 -71
  186. package/lib/modules/Summary/types.js +4 -16
  187. package/lib/modules/Summary/utils.js +773 -418
  188. package/lib/modules/SurchargeList/index.js +46 -60
  189. package/lib/modules/SurchargeList/types.js +4 -16
  190. package/lib/modules/index.js +245 -63
  191. package/lib/plugins/app.js +4 -16
  192. package/lib/plugins/index.js +36 -25
  193. package/lib/plugins/request.d.ts +1 -0
  194. package/lib/plugins/request.js +137 -126
  195. package/lib/plugins/shopStore.js +4 -16
  196. package/lib/plugins/user.js +4 -16
  197. package/lib/plugins/window.js +171 -179
  198. package/lib/server/index.d.ts +8 -2
  199. package/lib/server/index.js +3083 -2663
  200. package/lib/server/modules/floor-plan/index.d.ts +4 -0
  201. package/lib/server/modules/floor-plan/index.js +159 -127
  202. package/lib/server/modules/floor-plan/types.js +15 -30
  203. package/lib/server/modules/index.js +106 -68
  204. package/lib/server/modules/menu/index.js +170 -124
  205. package/lib/server/modules/menu/types.js +18 -31
  206. package/lib/server/modules/order/index.d.ts +17 -7
  207. package/lib/server/modules/order/index.js +916 -977
  208. package/lib/server/modules/order/types.js +122 -33
  209. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  210. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  211. package/lib/server/modules/payment/index.js +59 -83
  212. package/lib/server/modules/payment/types.js +4 -16
  213. package/lib/server/modules/products/index.d.ts +8 -2
  214. package/lib/server/modules/products/index.js +656 -471
  215. package/lib/server/modules/products/types.js +44 -34
  216. package/lib/server/modules/quotation/index.js +137 -172
  217. package/lib/server/modules/quotation/types.js +21 -31
  218. package/lib/server/modules/resource/index.js +225 -186
  219. package/lib/server/modules/resource/types.js +42 -33
  220. package/lib/server/modules/schedule/index.js +135 -123
  221. package/lib/server/modules/schedule/types.js +14 -21
  222. package/lib/server/modules/schedule/utils.js +334 -163
  223. package/lib/server/types.js +4 -16
  224. package/lib/server/utils/index.js +25 -23
  225. package/lib/server/utils/product.js +196 -139
  226. package/lib/server/utils/schedule.js +34 -41
  227. package/lib/server/utils/small-ticket.js +479 -456
  228. package/lib/server/utils/time.js +40 -49
  229. package/lib/solution/BaseSales/index.js +1186 -1410
  230. package/lib/solution/BaseSales/types.js +42 -38
  231. package/lib/solution/BaseSales/utils/cartPromotion.js +642 -498
  232. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  233. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  234. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  235. package/lib/solution/BaseSales/utils.js +158 -143
  236. package/lib/solution/BookingByStep/index.d.ts +1 -1
  237. package/lib/solution/BookingByStep/index.js +1527 -1340
  238. package/lib/solution/BookingByStep/types.js +40 -99
  239. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  240. package/lib/solution/BookingByStep/utils/products.js +42 -52
  241. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  242. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  243. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  244. package/lib/solution/BookingTicket/index.js +607 -522
  245. package/lib/solution/BookingTicket/types.js +99 -77
  246. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  247. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  248. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  249. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  250. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  251. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  252. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  253. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  254. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  255. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  256. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  257. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  258. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  259. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  260. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  261. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  262. package/lib/solution/BuyTickets/index.js +67 -70
  263. package/lib/solution/BuyTickets/types.js +22 -38
  264. package/lib/solution/Checkout/index.js +1451 -1158
  265. package/lib/solution/Checkout/types.js +91 -61
  266. package/lib/solution/Checkout/utils/index.js +228 -156
  267. package/lib/solution/PlaceOrder/index.js +55 -0
  268. package/lib/solution/RegisterAndLogin/config.js +493 -460
  269. package/lib/solution/RegisterAndLogin/index.js +633 -630
  270. package/lib/solution/RegisterAndLogin/types.js +189 -76
  271. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  272. package/lib/solution/Sales/index.js +328 -324
  273. package/lib/solution/Sales/types.js +27 -33
  274. package/lib/solution/ScanOrder/index.js +832 -864
  275. package/lib/solution/ScanOrder/types.js +33 -34
  276. package/lib/solution/ScanOrder/utils.js +409 -374
  277. package/lib/solution/ShopDiscount/index.js +226 -232
  278. package/lib/solution/ShopDiscount/types.js +15 -37
  279. package/lib/solution/ShopDiscount/utils.js +300 -172
  280. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  281. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  282. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  283. package/lib/solution/VenueBooking/index.js +811 -879
  284. package/lib/solution/VenueBooking/types.js +19 -39
  285. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  286. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  287. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  288. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  289. package/lib/solution/VenueBooking/utils.js +130 -67
  290. package/lib/solution/index.js +124 -41
  291. package/lib/store/createStore.js +32 -29
  292. package/lib/types/index.js +4 -16
  293. package/lib/utils/payment-number.js +26 -46
  294. package/lib/utils/task.js +36 -36
  295. package/lib/utils/watch.js +81 -47
  296. package/package.json +2 -1
@@ -1,201 +1,253 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/solution/BookingTicket/utils/scan/applyGlobalScan.ts
20
- var applyGlobalScan_exports = {};
21
- __export(applyGlobalScan_exports, {
22
- applyGlobalScan: () => applyGlobalScan
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(applyGlobalScan_exports);
25
- var import_addProductDecision = require("../addProductDecision");
26
- var import_cartView = require("../cartView");
27
- var import_scanProductValues = require("./scanProductValues");
6
+ exports.applyGlobalScan = applyGlobalScan;
7
+ var _addProductDecision = require("../addProductDecision");
8
+ var _cartView = require("../cartView");
9
+ var _scanProductValues = require("./scanProductValues");
10
+ /** applyGlobalScan 所需的 BookingTicket 运行时能力 */
11
+
12
+ /**
13
+ * 处理单条扫码商品的加车决策(含弹窗链)。
14
+ */
28
15
  async function processScannedProductItem(host, item, code, bridge) {
29
16
  const ctx = host.buildAddProductCtx();
30
- if ((0, import_scanProductValues.isScanProductBundle)(item) || (0, import_scanProductValues.isScanProductOption)(item)) {
17
+ if ((0, _scanProductValues.isScanProductBundle)(item) || (0, _scanProductValues.isScanProductOption)(item)) {
31
18
  return runRequiresDetailFlow(host, item, ctx, bridge);
32
19
  }
33
- if ((0, import_scanProductValues.countScanVariantMatches)(item, code) >= 2) {
20
+ if ((0, _scanProductValues.countScanVariantMatches)(item, code) >= 2) {
34
21
  return runRequiresDetailFlow(host, item, ctx, bridge);
35
22
  }
36
- const values = (0, import_scanProductValues.genScanProductValues)(item, code);
37
- const itemWithSelection = { ...item, cartDetailValue: values };
23
+ const values = (0, _scanProductValues.genScanProductValues)(item, code);
24
+ const itemWithSelection = {
25
+ ...item,
26
+ cartDetailValue: values
27
+ };
38
28
  const decision = host.decideAddProduct(itemWithSelection, ctx);
39
29
  return runAddProductDecision(host, item, decision, ctx, bridge);
40
30
  }
41
31
  async function runRequiresDetailFlow(host, item, ctx, bridge) {
42
- if (!(bridge == null ? void 0 : bridge.openProductDetail)) {
43
- return "pending";
32
+ if (!bridge?.openProductDetail) {
33
+ return 'pending';
44
34
  }
45
- const payload = (0, import_addProductDecision.buildRequiresDetailPayload)(item, ctx);
35
+ const payload = (0, _addProductDecision.buildRequiresDetailPayload)(item, ctx);
46
36
  const detailResult = await bridge.openProductDetail(payload);
47
37
  if (!detailResult) {
48
- return "cancelled";
38
+ return 'cancelled';
49
39
  }
50
40
  if (!bridge.confirmDetail) {
51
- return "pending";
41
+ return 'pending';
52
42
  }
53
43
  await bridge.confirmDetail({
54
44
  item: payload.productData ?? payload.item ?? item,
55
45
  detailResult
56
46
  });
57
- return "added";
47
+ return 'added';
58
48
  }
59
49
  async function runAddProductDecision(host, catalogItem, decision, ctx, bridge) {
60
- if (decision.action === "reloadCatalog") {
61
- return "cancelled";
50
+ if (decision.action === 'reloadCatalog') {
51
+ return 'cancelled';
62
52
  }
63
- if (decision.action === "add") {
53
+ if (decision.action === 'add') {
64
54
  const transformed = host.transformDetailToProductAndBooking({
65
55
  item: catalogItem,
66
56
  cacheItem: decision.cacheItem,
67
57
  options: ctx
68
58
  });
69
59
  await host.addProductToOrder(transformed.product, transformed.booking);
70
- return "added";
60
+ return 'added';
71
61
  }
72
- if (decision.action === "requiresDetail") {
62
+ if (decision.action === 'requiresDetail') {
73
63
  return runRequiresDetailFlow(host, catalogItem, ctx, bridge);
74
64
  }
75
- if (decision.action === "requiresBookingEdit") {
76
- if (!(bridge == null ? void 0 : bridge.openBookingEdit)) {
77
- return "pending";
65
+ if (decision.action === 'requiresBookingEdit') {
66
+ if (!bridge?.openBookingEdit) {
67
+ return 'pending';
78
68
  }
79
69
  const edited = await bridge.openBookingEdit(decision.payload);
80
70
  if (!edited) {
81
- return "cancelled";
71
+ return 'cancelled';
82
72
  }
83
73
  if (!bridge.confirmBookingEdit) {
84
- return "pending";
74
+ return 'pending';
85
75
  }
86
- await bridge.confirmBookingEdit({ cacheItem: edited });
87
- return "added";
76
+ await bridge.confirmBookingEdit({
77
+ cacheItem: edited
78
+ });
79
+ return 'added';
88
80
  }
89
- return "pending";
81
+ return 'pending';
90
82
  }
83
+
84
+ /**
85
+ * 应用全局扫码格式化结果:设客户 / 加车 / 开单 / 弹窗链。
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * const result = await applyGlobalScan(bookingTicket, formatted, bridge);
90
+ * ```
91
+ */
91
92
  async function applyGlobalScan(host, formatted, bridge) {
92
- var _a, _b, _c, _d, _e, _f, _g;
93
- const { searchType, data, scanCode } = formatted;
94
- if (searchType === "wallet") {
93
+ const {
94
+ searchType,
95
+ data,
96
+ scanCode
97
+ } = formatted;
98
+ if (searchType === 'wallet') {
95
99
  if (!data) {
96
- (_a = bridge == null ? void 0 : bridge.onNotify) == null ? void 0 : _a.call(bridge, "fail", "pisell2.text.scan-global-failed");
97
- return { status: "failed", reason: "invalid_data" };
100
+ bridge?.onNotify?.('fail', 'pisell2.text.scan-global-failed');
101
+ return {
102
+ status: 'failed',
103
+ reason: 'invalid_data'
104
+ };
98
105
  }
99
106
  host.setOrderCustomer(data);
100
- (_b = bridge == null ? void 0 : bridge.onNotify) == null ? void 0 : _b.call(bridge, "success", "pisell2.text.add-client-success");
101
- return { status: "success", kind: "customer" };
107
+ bridge?.onNotify?.('success', 'pisell2.text.add-client-success');
108
+ return {
109
+ status: 'success',
110
+ kind: 'customer'
111
+ };
102
112
  }
103
- if (searchType === "walletPass") {
113
+ if (searchType === 'walletPass') {
104
114
  const snapshot = host.getOrderCustomerSnapshot();
105
- const scannedCustomerIsWalkIn = (0, import_cartView.isWalkInCustomer)(data);
115
+ const scannedCustomerIsWalkIn = (0, _cartView.isWalkInCustomer)(data);
106
116
  const trySelectWalletAsset = async () => {
107
- var _a2, _b2;
108
- if (!host.scanWalletAsset)
109
- return null;
110
- const walletResult = await host.scanWalletAsset(scanCode).catch((error) => {
111
- console.warn("[GlobalScan] Wallet asset lookup failed", error);
117
+ if (!host.scanWalletAsset) return null;
118
+ const walletResult = await host.scanWalletAsset(scanCode).catch(error => {
119
+ console.warn('[GlobalScan] Wallet asset lookup failed', error);
112
120
  return null;
113
121
  });
114
- if (!walletResult)
115
- return null;
116
- if (walletResult.type !== "normalCode" || !walletResult.asset) {
122
+ if (!walletResult) return null;
123
+ if (walletResult.type !== 'normalCode' || !walletResult.asset) {
117
124
  return null;
118
125
  }
119
126
  if (walletResult.selected) {
120
- (_a2 = bridge == null ? void 0 : bridge.onNotify) == null ? void 0 : _a2.call(bridge, "success");
121
- return { status: "success", kind: "promotion" };
127
+ bridge?.onNotify?.('success');
128
+ return {
129
+ status: 'success',
130
+ kind: 'promotion'
131
+ };
122
132
  }
123
- (_b2 = bridge == null ? void 0 : bridge.onNotify) == null ? void 0 : _b2.call(bridge, "fail", "pisell2.text.goodpass.code-invalid-cart");
124
- return { status: "failed", reason: "invalid_data" };
133
+ // 已识别为 Wallet 支付资产但当前不可用:保留禁用展示,不回退优惠码。
134
+ bridge?.onNotify?.('fail', 'pisell2.text.goodpass.code-invalid-cart');
135
+ return {
136
+ status: 'failed',
137
+ reason: 'invalid_data'
138
+ };
125
139
  };
126
- if ((0, import_cartView.isWalkInCustomer)(snapshot) || scannedCustomerIsWalkIn) {
127
- const walletSelection2 = await trySelectWalletAsset();
128
- if (walletSelection2)
129
- return walletSelection2;
130
- if (!(bridge == null ? void 0 : bridge.applyPromotionCode)) {
131
- return { status: "failed", reason: "no_bridge" };
140
+ if ((0, _cartView.isWalkInCustomer)(snapshot) || scannedCustomerIsWalkIn) {
141
+ // 当前购物车或 walletPass 绑定客户为 walk-in 时不绑客户,避免覆盖已有下单客户。
142
+ const walletSelection = await trySelectWalletAsset();
143
+ if (walletSelection) return walletSelection;
144
+ if (!bridge?.applyPromotionCode) {
145
+ return {
146
+ status: 'failed',
147
+ reason: 'no_bridge'
148
+ };
132
149
  }
133
150
  const result = await bridge.applyPromotionCode(scanCode);
134
- if ((result == null ? void 0 : result.isAccepted) ?? (result == null ? void 0 : result.isAvailable)) {
135
- return { status: "success", kind: "promotion" };
151
+ if (result?.isAccepted ?? result?.isAvailable) {
152
+ return {
153
+ status: 'success',
154
+ kind: 'promotion'
155
+ };
136
156
  }
137
- return { status: "failed", reason: "invalid_data" };
157
+ return {
158
+ status: 'failed',
159
+ reason: 'invalid_data'
160
+ };
138
161
  }
139
162
  host.setOrderCustomer(data);
140
- await ((_c = host.refreshWalletAssets) == null ? void 0 : _c.call(host, { preserveSelection: false }));
163
+ await host.refreshWalletAssets?.({
164
+ preserveSelection: false
165
+ });
141
166
  const walletSelection = await trySelectWalletAsset();
142
- if (walletSelection)
143
- return walletSelection;
144
- if (bridge == null ? void 0 : bridge.applyPromotionCode) {
145
- const promotionResult = await bridge.applyPromotionCode(
146
- scanCode,
147
- Number((data == null ? void 0 : data.id) ?? (data == null ? void 0 : data.customer_id)) || void 0
148
- );
149
- if ((promotionResult == null ? void 0 : promotionResult.isAccepted) ?? (promotionResult == null ? void 0 : promotionResult.isAvailable)) {
150
- return { status: "success", kind: "promotion" };
167
+ if (walletSelection) return walletSelection;
168
+ if (bridge?.applyPromotionCode) {
169
+ const promotionResult = await bridge.applyPromotionCode(scanCode, Number(data?.id ?? data?.customer_id) || undefined);
170
+ if (promotionResult?.isAccepted ?? promotionResult?.isAvailable) {
171
+ return {
172
+ status: 'success',
173
+ kind: 'promotion'
174
+ };
151
175
  }
152
176
  }
153
- (_d = bridge == null ? void 0 : bridge.onNotify) == null ? void 0 : _d.call(bridge, "success", "pisell2.text.add-client-success");
154
- return { status: "success", kind: "customer" };
177
+ bridge?.onNotify?.('success', 'pisell2.text.add-client-success');
178
+ return {
179
+ status: 'success',
180
+ kind: 'customer'
181
+ };
155
182
  }
156
- if (searchType === "product" || searchType === "local_product") {
157
- const list = data == null ? void 0 : data.list;
183
+ if (searchType === 'product' || searchType === 'local_product') {
184
+ const list = data?.list;
158
185
  if (!Array.isArray(list) || list.length === 0) {
159
- (_e = bridge == null ? void 0 : bridge.onNotify) == null ? void 0 : _e.call(bridge, "fail", "pisell2.text.scan-global-failed");
160
- return { status: "failed", reason: "invalid_data" };
186
+ bridge?.onNotify?.('fail', 'pisell2.text.scan-global-failed');
187
+ return {
188
+ status: 'failed',
189
+ reason: 'invalid_data'
190
+ };
161
191
  }
162
192
  let addedCount = 0;
163
193
  for (const item of list) {
164
194
  const outcome = await processScannedProductItem(host, item, scanCode, bridge);
165
- if (outcome === "added") {
195
+ if (outcome === 'added') {
166
196
  addedCount += 1;
167
197
  }
168
- if (outcome === "cancelled") {
169
- return { status: "cancelled" };
198
+ if (outcome === 'cancelled') {
199
+ return {
200
+ status: 'cancelled'
201
+ };
170
202
  }
171
- if (outcome === "pending") {
172
- return { status: "pending", kind: "requiresDetail" };
203
+ if (outcome === 'pending') {
204
+ return {
205
+ status: 'pending',
206
+ kind: 'requiresDetail'
207
+ };
173
208
  }
174
209
  }
175
210
  if (addedCount > 0) {
176
- (_f = bridge == null ? void 0 : bridge.onNotify) == null ? void 0 : _f.call(bridge, "success");
177
- return { status: "success", kind: "products", meta: { count: addedCount } };
211
+ bridge?.onNotify?.('success');
212
+ return {
213
+ status: 'success',
214
+ kind: 'products',
215
+ meta: {
216
+ count: addedCount
217
+ }
218
+ };
178
219
  }
179
- return { status: "failed", reason: "no_bridge" };
220
+ return {
221
+ status: 'failed',
222
+ reason: 'no_bridge'
223
+ };
180
224
  }
181
- if (searchType === "order") {
182
- const orderId = (data == null ? void 0 : data.order_id) ?? (data == null ? void 0 : data.id);
225
+ if (searchType === 'order') {
226
+ const orderId = data?.order_id ?? data?.id;
183
227
  if (!orderId) {
184
- (_g = bridge == null ? void 0 : bridge.onNotify) == null ? void 0 : _g.call(bridge, "fail", "pisell2.text.scan-global-failed");
185
- return { status: "failed", reason: "invalid_data" };
228
+ bridge?.onNotify?.('fail', 'pisell2.text.scan-global-failed');
229
+ return {
230
+ status: 'failed',
231
+ reason: 'invalid_data'
232
+ };
186
233
  }
187
- if (!(bridge == null ? void 0 : bridge.openOrder)) {
188
- return { status: "pending", kind: "openOrder" };
234
+ if (!bridge?.openOrder) {
235
+ return {
236
+ status: 'pending',
237
+ kind: 'openOrder'
238
+ };
189
239
  }
190
240
  bridge.openOrder({
191
241
  order_id: Number(orderId),
192
- business_code: (data == null ? void 0 : data.business_code) ?? host.getBusinessCode()
242
+ business_code: data?.business_code ?? host.getBusinessCode()
193
243
  });
194
- return { status: "pending", kind: "openOrder" };
244
+ return {
245
+ status: 'pending',
246
+ kind: 'openOrder'
247
+ };
195
248
  }
196
- return { status: "failed", reason: "invalid_data" };
197
- }
198
- // Annotate the CommonJS export names for ESM import in node:
199
- 0 && (module.exports = {
200
- applyGlobalScan
201
- });
249
+ return {
250
+ status: 'failed',
251
+ reason: 'invalid_data'
252
+ };
253
+ }
@@ -1,85 +1,77 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/solution/BookingTicket/utils/scan/cloudSearch.ts
20
- var cloudSearch_exports = {};
21
- __export(cloudSearch_exports, {
22
- searchOrder: () => searchOrder,
23
- searchProduct: () => searchProduct,
24
- searchWallet: () => searchWallet,
25
- searchWalletPass: () => searchWalletPass
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
26
5
  });
27
- module.exports = __toCommonJS(cloudSearch_exports);
28
- var searchWalletPass = async (request, code) => {
6
+ exports.searchWalletPass = exports.searchWallet = exports.searchProduct = exports.searchOrder = void 0;
7
+ /**
8
+ * 搜索通用识别码
9
+ */
10
+ const searchWalletPass = async (request, code) => {
29
11
  const params = {
30
12
  code,
31
13
  translate_flag: 1,
32
14
  // 翻译识别码名称 0:不翻译 1:翻译
33
15
  relation_product: 1,
34
16
  // 组装关联商品: 0不处理 1处理
35
- with: ["customer"],
36
- tags: [
37
- "point_card",
38
- // 积分卡
39
- "gift_card",
40
- // 充值卡
41
- "product_voucher",
42
- // 代金券
43
- "product_discount_card",
44
- // 折扣卡
45
- "good_pass",
46
- // 商品券
47
- "session_ticket",
48
- // 场次票
49
- "appointment_ticket"
50
- // 预约类门票
17
+ with: ['customer'],
18
+ tags: ['point_card',
19
+ // 积分卡
20
+ 'gift_card',
21
+ // 充值卡
22
+ 'product_voucher',
23
+ // 代金券
24
+ 'product_discount_card',
25
+ // 折扣卡
26
+ 'good_pass',
27
+ // 商品券
28
+ 'session_ticket',
29
+ // 场次票
30
+ 'appointment_ticket' // 预约类门票
51
31
  ]
52
32
  };
53
33
  try {
54
- const res = await (request == null ? void 0 : request.get(
55
- "/machinecode/batch-search",
56
- params
57
- ));
58
- if ((res == null ? void 0 : res.code) == 200 && !!(res == null ? void 0 : res.data)) {
59
- return { searchType: "walletPass", response: res };
34
+ const res = await request?.get('/machinecode/batch-search', params);
35
+ if (res?.code == 200 && !!res?.data) {
36
+ return {
37
+ searchType: 'walletPass',
38
+ response: res
39
+ };
60
40
  }
61
- throw new Error("没有找到对应的识别码");
41
+ throw new Error('没有找到对应的识别码');
62
42
  } catch (error) {
63
43
  throw error;
64
44
  }
65
45
  };
66
- var searchWallet = async (request, code) => {
67
- const params = { code, with_customer: 1 };
46
+
47
+ /**
48
+ * 搜索钱包
49
+ */
50
+ exports.searchWalletPass = searchWalletPass;
51
+ const searchWallet = async (request, code) => {
52
+ const params = {
53
+ code,
54
+ with_customer: 1
55
+ };
68
56
  try {
69
- const res = await (request == null ? void 0 : request.post(
70
- "/wallet/detail/search",
71
- params
72
- ));
73
- if ((res == null ? void 0 : res.code) == 200 && !!(res == null ? void 0 : res.data)) {
74
- return { searchType: "wallet", response: res };
57
+ const res = await request?.post('/wallet/detail/search', params);
58
+ if (res?.code == 200 && !!res?.data) {
59
+ return {
60
+ searchType: 'wallet',
61
+ response: res
62
+ };
75
63
  }
76
- throw new Error("没有找到对应的识别码");
64
+ throw new Error('没有找到对应的识别码');
77
65
  } catch (error) {
78
66
  throw error;
79
67
  }
80
68
  };
81
- var searchProduct = async (request, code) => {
82
- var _a, _b;
69
+
70
+ /**
71
+ * 搜索商品
72
+ */
73
+ exports.searchWallet = searchWallet;
74
+ const searchProduct = async (request, code) => {
83
75
  const params = {
84
76
  exact_search: code,
85
77
  open_bundle: 0,
@@ -88,47 +80,43 @@ var searchProduct = async (request, code) => {
88
80
  // 报价单
89
81
  skip: 1,
90
82
  num: 20,
91
- status: "published",
92
- with: ["variantGroup.variantItem", "optionGroup.optionItem"],
93
- with_count: ["bundleGroup", "optionGroup"],
94
- exclude_extension_type: [
95
- "product_party",
96
- "product_event",
97
- "product_series_event",
98
- "product_package_ticket",
99
- "ticket",
100
- "event_item"
101
- ]
83
+ status: 'published',
84
+ with: ['variantGroup.variantItem', 'optionGroup.optionItem'],
85
+ with_count: ['bundleGroup', 'optionGroup'],
86
+ exclude_extension_type: ['product_party', 'product_event', 'product_series_event', 'product_package_ticket', 'ticket', 'event_item']
102
87
  };
103
88
  try {
104
- const res = await (request == null ? void 0 : request.post("/product/query", params));
105
- if ((res == null ? void 0 : res.code) == 200 && ((_b = (_a = res == null ? void 0 : res.data) == null ? void 0 : _a.list) == null ? void 0 : _b.length) > 0) {
106
- return { searchType: "product", response: res };
89
+ const res = await request?.post('/product/query', params);
90
+ if (res?.code == 200 && res?.data?.list?.length > 0) {
91
+ return {
92
+ searchType: 'product',
93
+ response: res
94
+ };
107
95
  }
108
- throw new Error("没有找到对应的识别码");
96
+ throw new Error('没有找到对应的识别码');
109
97
  } catch (error) {
110
98
  throw error;
111
99
  }
112
100
  };
113
- var searchOrder = async (request, code) => {
101
+ exports.searchProduct = searchProduct;
102
+ const searchOrder = async (request, code) => {
114
103
  try {
115
- const res = await (request == null ? void 0 : request.get(`/order/sales/${code}`, {
116
- lookup_mode: "multi"
117
- }, { customToast: () => {
118
- }, osServer: true }));
119
- console.log("searchOrder>>>>>>>", res);
120
- if ((res == null ? void 0 : res.code) == 200 && !!(res == null ? void 0 : res.data)) {
121
- return { searchType: "order", response: res };
104
+ // 注意 下面这段由于 pisellos: server/index 的特性,可能转发到本地去数据库查询
105
+ const res = await request?.get(`/order/sales/${code}`, {
106
+ lookup_mode: 'multi'
107
+ }, {
108
+ customToast: () => {},
109
+ osServer: true
110
+ });
111
+ if (res?.code == 200 && !!res?.data) {
112
+ return {
113
+ searchType: 'order',
114
+ response: res
115
+ };
122
116
  }
123
- throw new Error("没有找到对应的识别码");
117
+ throw new Error('没有找到对应的识别码');
124
118
  } catch (error) {
125
119
  throw error;
126
120
  }
127
121
  };
128
- // Annotate the CommonJS export names for ESM import in node:
129
- 0 && (module.exports = {
130
- searchOrder,
131
- searchProduct,
132
- searchWallet,
133
- searchWalletPass
134
- });
122
+ exports.searchOrder = searchOrder;