@pisell/pisellos 2.2.283 → 2.2.284

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 (284) hide show
  1. package/dist/core/index.js +6 -10
  2. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  3. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  4. package/dist/model/strategy/strategy-example.js +5 -19
  5. package/dist/modules/Cart/index.js +0 -3
  6. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  7. package/dist/modules/Date/index.js +1 -5
  8. package/dist/modules/Discount/index.js +2 -4
  9. package/dist/modules/OpenData/index.js +0 -2
  10. package/dist/modules/Order/index.d.ts +1 -1
  11. package/dist/modules/Order/index.js +64 -86
  12. package/dist/modules/Order/types.d.ts +1 -1
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Rules/index.js +1 -4
  15. package/dist/modules/Schedule/index.js +0 -1
  16. package/dist/modules/Schedule/utils.js +0 -1
  17. package/dist/modules/Step/index.js +0 -1
  18. package/dist/modules/Summary/utils.d.ts +1 -1
  19. package/dist/plugins/request.js +1 -4
  20. package/dist/plugins/window.js +2 -6
  21. package/dist/server/index.js +97 -129
  22. package/dist/server/modules/menu/index.js +32 -41
  23. package/dist/server/modules/order/index.js +2 -4
  24. package/dist/server/modules/products/index.js +24 -42
  25. package/dist/server/modules/quotation/index.js +29 -38
  26. package/dist/server/modules/resource/index.js +3 -4
  27. package/dist/server/modules/schedule/index.js +27 -35
  28. package/dist/server/utils/product.js +0 -1
  29. package/dist/solution/BaseSales/index.js +100 -72
  30. package/dist/solution/BookingByStep/index.d.ts +1 -1
  31. package/dist/solution/BookingByStep/index.js +7 -59
  32. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  33. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  34. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  35. package/dist/solution/BookingTicket/index.d.ts +1 -13
  36. package/dist/solution/BookingTicket/index.js +0 -2
  37. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  38. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  39. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  40. package/dist/solution/BuyTickets/index.js +9 -12
  41. package/dist/solution/Checkout/index.js +177 -252
  42. package/dist/solution/Checkout/utils/index.js +4 -16
  43. package/dist/solution/RegisterAndLogin/index.js +30 -76
  44. package/dist/solution/ScanOrder/index.js +50 -60
  45. package/dist/solution/ShopDiscount/index.js +2 -7
  46. package/dist/solution/VenueBooking/index.js +45 -55
  47. package/dist/utils/task.js +15 -18
  48. package/dist/utils/watch.js +0 -1
  49. package/lib/apis/picoding.js +2 -0
  50. package/lib/core/index.js +131 -132
  51. package/lib/effects/index.js +46 -57
  52. package/lib/index.js +82 -49
  53. package/lib/model/index.js +14 -21
  54. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  55. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  56. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  57. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  58. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  59. package/lib/model/strategy/adapter/index.js +100 -64
  60. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  61. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  62. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  63. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  64. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  65. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  66. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  67. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  68. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  69. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  70. package/lib/model/strategy/adapter/type.js +4 -16
  71. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  72. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  73. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  74. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  75. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  76. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  77. package/lib/model/strategy/engine.js +270 -168
  78. package/lib/model/strategy/index.js +49 -34
  79. package/lib/model/strategy/strategy-example.js +243 -239
  80. package/lib/model/strategy/type.js +100 -40
  81. package/lib/modules/Account/index.js +39 -53
  82. package/lib/modules/Account/types.js +20 -33
  83. package/lib/modules/AccountList/index.js +116 -154
  84. package/lib/modules/AccountList/types.js +30 -31
  85. package/lib/modules/AccountList/utils.js +18 -30
  86. package/lib/modules/BaseModule.js +23 -42
  87. package/lib/modules/BookingContext/index.js +158 -136
  88. package/lib/modules/BookingContext/types.js +46 -32
  89. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  90. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  91. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  92. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  93. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  94. package/lib/modules/BookingContext/utils/index.js +124 -41
  95. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  96. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  97. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  98. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  99. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  100. package/lib/modules/BookingContext/utils/resources.js +209 -167
  101. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  102. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  103. package/lib/modules/Cart/index.js +170 -124
  104. package/lib/modules/Cart/types.js +46 -51
  105. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  106. package/lib/modules/Cart/utils/cartDate.js +56 -61
  107. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  108. package/lib/modules/Cart/utils/cartNote.js +27 -32
  109. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  110. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  111. package/lib/modules/Cart/utils/cartResource.js +70 -78
  112. package/lib/modules/Cart/utils/changePrice.js +22 -50
  113. package/lib/modules/Cart/utils/index.js +106 -48
  114. package/lib/modules/Customer/constants.js +13 -34
  115. package/lib/modules/Customer/index.js +235 -172
  116. package/lib/modules/Customer/types.js +38 -35
  117. package/lib/modules/Date/index.js +116 -115
  118. package/lib/modules/Date/types.js +16 -28
  119. package/lib/modules/Date/utils.js +174 -123
  120. package/lib/modules/Discount/index.js +122 -127
  121. package/lib/modules/Discount/types.js +9 -31
  122. package/lib/modules/Guests/index.js +30 -56
  123. package/lib/modules/Guests/types.js +23 -33
  124. package/lib/modules/Holder/index.js +209 -189
  125. package/lib/modules/Holder/types.js +4 -16
  126. package/lib/modules/Holder/utils.js +20 -49
  127. package/lib/modules/OpenData/index.js +70 -76
  128. package/lib/modules/OpenData/types.js +4 -16
  129. package/lib/modules/OpenData/utils.js +44 -78
  130. package/lib/modules/Order/index.d.ts +1 -1
  131. package/lib/modules/Order/index.js +1728 -2123
  132. package/lib/modules/Order/payment-utils.js +77 -120
  133. package/lib/modules/Order/types.d.ts +1 -1
  134. package/lib/modules/Order/types.js +87 -35
  135. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  136. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  137. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  138. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  139. package/lib/modules/Order/utils.js +814 -647
  140. package/lib/modules/Payment/cash.js +20 -33
  141. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  142. package/lib/modules/Payment/eftpos.js +16 -30
  143. package/lib/modules/Payment/index.js +532 -399
  144. package/lib/modules/Payment/mx51.js +1 -0
  145. package/lib/modules/Payment/types.js +230 -108
  146. package/lib/modules/Payment/utils.js +52 -51
  147. package/lib/modules/Payment/walletpass.js +485 -660
  148. package/lib/modules/Product/index.js +51 -46
  149. package/lib/modules/Product/types.js +4 -16
  150. package/lib/modules/Product/utils.js +32 -33
  151. package/lib/modules/ProductList/index.js +113 -123
  152. package/lib/modules/ProductList/types.js +9 -31
  153. package/lib/modules/Quotation/index.js +66 -100
  154. package/lib/modules/Quotation/types.js +4 -16
  155. package/lib/modules/Resource/index.js +27 -59
  156. package/lib/modules/Resource/types.js +22 -32
  157. package/lib/modules/Resource/utils.js +30 -38
  158. package/lib/modules/ResourcePlanner/index.js +60 -61
  159. package/lib/modules/ResourcePlanner/planner.js +346 -384
  160. package/lib/modules/ResourcePlanner/types.js +4 -16
  161. package/lib/modules/Rules/index.js +1218 -959
  162. package/lib/modules/Rules/types.js +17 -40
  163. package/lib/modules/SalesSummary/index.js +85 -90
  164. package/lib/modules/SalesSummary/types.js +4 -16
  165. package/lib/modules/SalesSummary/utils.js +355 -430
  166. package/lib/modules/ScanOrderLogger/index.js +59 -79
  167. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  168. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  169. package/lib/modules/ScanOrderLogger/types.js +4 -16
  170. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  171. package/lib/modules/Schedule/index.js +100 -114
  172. package/lib/modules/Schedule/type.js +4 -16
  173. package/lib/modules/Schedule/types.js +4 -16
  174. package/lib/modules/Schedule/utils.js +433 -291
  175. package/lib/modules/Step/index.js +40 -52
  176. package/lib/modules/Step/tyeps.js +4 -16
  177. package/lib/modules/Summary/index.js +66 -71
  178. package/lib/modules/Summary/types.js +4 -16
  179. package/lib/modules/Summary/utils.d.ts +1 -1
  180. package/lib/modules/Summary/utils.js +773 -418
  181. package/lib/modules/SurchargeList/index.js +46 -60
  182. package/lib/modules/SurchargeList/types.js +4 -16
  183. package/lib/modules/index.js +245 -63
  184. package/lib/plugins/app.js +4 -16
  185. package/lib/plugins/index.js +36 -25
  186. package/lib/plugins/request.js +137 -126
  187. package/lib/plugins/shopStore.js +4 -16
  188. package/lib/plugins/user.js +4 -16
  189. package/lib/plugins/window.js +171 -179
  190. package/lib/server/index.js +3027 -2655
  191. package/lib/server/modules/floor-plan/index.js +102 -123
  192. package/lib/server/modules/floor-plan/types.js +15 -30
  193. package/lib/server/modules/index.js +106 -68
  194. package/lib/server/modules/menu/index.js +146 -122
  195. package/lib/server/modules/menu/types.js +18 -31
  196. package/lib/server/modules/order/index.js +758 -956
  197. package/lib/server/modules/order/types.js +122 -33
  198. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  199. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  200. package/lib/server/modules/payment/index.js +59 -83
  201. package/lib/server/modules/payment/types.js +4 -16
  202. package/lib/server/modules/products/index.js +575 -459
  203. package/lib/server/modules/products/types.js +44 -34
  204. package/lib/server/modules/quotation/index.js +137 -172
  205. package/lib/server/modules/quotation/types.js +21 -31
  206. package/lib/server/modules/resource/index.js +213 -184
  207. package/lib/server/modules/resource/types.js +42 -33
  208. package/lib/server/modules/schedule/index.js +135 -123
  209. package/lib/server/modules/schedule/types.js +14 -21
  210. package/lib/server/modules/schedule/utils.js +334 -163
  211. package/lib/server/types.js +4 -16
  212. package/lib/server/utils/index.js +25 -23
  213. package/lib/server/utils/product.js +196 -139
  214. package/lib/server/utils/schedule.js +34 -41
  215. package/lib/server/utils/small-ticket.js +479 -456
  216. package/lib/server/utils/time.js +40 -49
  217. package/lib/solution/BaseSales/index.js +1209 -1412
  218. package/lib/solution/BaseSales/types.js +42 -38
  219. package/lib/solution/BaseSales/utils/cartPromotion.js +650 -502
  220. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  221. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  222. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  223. package/lib/solution/BaseSales/utils.js +158 -143
  224. package/lib/solution/BookingByStep/index.d.ts +1 -1
  225. package/lib/solution/BookingByStep/index.js +1527 -1340
  226. package/lib/solution/BookingByStep/types.js +40 -99
  227. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  228. package/lib/solution/BookingByStep/utils/products.js +42 -52
  229. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  230. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  231. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  232. package/lib/solution/BookingTicket/index.d.ts +1 -13
  233. package/lib/solution/BookingTicket/index.js +594 -514
  234. package/lib/solution/BookingTicket/types.js +99 -77
  235. package/lib/solution/BookingTicket/utils/addProductDecision.js +225 -187
  236. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  237. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  238. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  239. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  240. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  241. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  242. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  243. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  244. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  245. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  246. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  247. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  248. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  249. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  250. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  251. package/lib/solution/BuyTickets/index.js +67 -70
  252. package/lib/solution/BuyTickets/types.js +22 -38
  253. package/lib/solution/Checkout/index.js +1451 -1158
  254. package/lib/solution/Checkout/types.js +91 -61
  255. package/lib/solution/Checkout/utils/index.js +228 -156
  256. package/lib/solution/PlaceOrder/index.js +55 -0
  257. package/lib/solution/RegisterAndLogin/config.js +493 -460
  258. package/lib/solution/RegisterAndLogin/index.js +633 -630
  259. package/lib/solution/RegisterAndLogin/types.js +189 -76
  260. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  261. package/lib/solution/Sales/index.js +328 -324
  262. package/lib/solution/Sales/types.js +27 -33
  263. package/lib/solution/ScanOrder/index.js +832 -864
  264. package/lib/solution/ScanOrder/types.js +33 -34
  265. package/lib/solution/ScanOrder/utils.js +409 -374
  266. package/lib/solution/ShopDiscount/index.js +226 -232
  267. package/lib/solution/ShopDiscount/types.js +15 -37
  268. package/lib/solution/ShopDiscount/utils.js +300 -172
  269. package/lib/solution/UnifiedBookingSales/index.js +437 -487
  270. package/lib/solution/UnifiedBookingSales/types.js +12 -31
  271. package/lib/solution/VenueBooking/index.js +811 -879
  272. package/lib/solution/VenueBooking/types.js +19 -39
  273. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  274. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  275. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  276. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  277. package/lib/solution/VenueBooking/utils.js +130 -67
  278. package/lib/solution/index.js +124 -41
  279. package/lib/store/createStore.js +32 -29
  280. package/lib/types/index.js +4 -16
  281. package/lib/utils/payment-number.js +26 -46
  282. package/lib/utils/task.js +36 -36
  283. package/lib/utils/watch.js +81 -47
  284. package/package.json +2 -1
@@ -1,84 +1,62 @@
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/modules/Order/payment-utils.ts
20
- var payment_utils_exports = {};
21
- __export(payment_utils_exports, {
22
- ensureOrderPaymentNumber: () => ensureOrderPaymentNumber,
23
- getOrderPaymentIdentityKeys: () => getOrderPaymentIdentityKeys,
24
- hasOrderPaymentIdentityOverlap: () => hasOrderPaymentIdentityOverlap,
25
- isIdentifiedPendingOrderPayment: () => isIdentifiedPendingOrderPayment,
26
- isPendingOrderPayment: () => isPendingOrderPayment,
27
- mergeOrderPaymentListsByIdentity: () => mergeOrderPaymentListsByIdentity,
28
- mergeOrderPaymentRecord: () => mergeOrderPaymentRecord,
29
- mergeOrderPaymentSnapshot: () => mergeOrderPaymentSnapshot,
30
- mergeOrderPaymentTransactions: () => mergeOrderPaymentTransactions,
31
- resolveOrderPaymentIdentity: () => resolveOrderPaymentIdentity
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
32
5
  });
33
- module.exports = __toCommonJS(payment_utils_exports);
34
- var PAYMENT_IDENTITY_TYPES = [
35
- "payment_number",
36
- "order_payment_id",
37
- "unique_payment_number"
38
- ];
6
+ exports.ensureOrderPaymentNumber = ensureOrderPaymentNumber;
7
+ exports.getOrderPaymentIdentityKeys = getOrderPaymentIdentityKeys;
8
+ exports.hasOrderPaymentIdentityOverlap = hasOrderPaymentIdentityOverlap;
9
+ exports.isIdentifiedPendingOrderPayment = isIdentifiedPendingOrderPayment;
10
+ exports.isPendingOrderPayment = isPendingOrderPayment;
11
+ exports.mergeOrderPaymentListsByIdentity = mergeOrderPaymentListsByIdentity;
12
+ exports.mergeOrderPaymentRecord = mergeOrderPaymentRecord;
13
+ exports.mergeOrderPaymentSnapshot = mergeOrderPaymentSnapshot;
14
+ exports.mergeOrderPaymentTransactions = mergeOrderPaymentTransactions;
15
+ exports.resolveOrderPaymentIdentity = resolveOrderPaymentIdentity;
16
+ const PAYMENT_IDENTITY_TYPES = ['payment_number', 'order_payment_id', 'unique_payment_number'];
39
17
  function normalizePaymentIdentityValue(value) {
40
- if (value === void 0 || value === null || value === "")
41
- return null;
18
+ if (value === undefined || value === null || value === '') return null;
42
19
  return String(value);
43
20
  }
44
21
  function getPaymentIdentityValue(payment, type) {
45
- var _a;
46
- if (type === "unique_payment_number") {
47
- return (_a = payment == null ? void 0 : payment.metadata) == null ? void 0 : _a.unique_payment_number;
22
+ if (type === 'unique_payment_number') {
23
+ return payment?.metadata?.unique_payment_number;
48
24
  }
49
- return payment == null ? void 0 : payment[type];
25
+ return payment?.[type];
50
26
  }
51
27
  function getOrderPaymentIdentityKeys(payment) {
52
28
  const record = payment;
53
- if (!record)
54
- return [];
55
- return PAYMENT_IDENTITY_TYPES.flatMap((type) => {
29
+ if (!record) return [];
30
+ return PAYMENT_IDENTITY_TYPES.flatMap(type => {
56
31
  const value = normalizePaymentIdentityValue(getPaymentIdentityValue(record, type));
57
32
  return value === null ? [] : [`${type}:${value}`];
58
33
  });
59
34
  }
60
35
  function isPendingOrderPayment(payment) {
61
36
  const record = payment;
62
- return String((record == null ? void 0 : record.status) || "").toLowerCase() === "payment_pending";
37
+ return String(record?.status || '').toLowerCase() === 'payment_pending';
63
38
  }
64
39
  function isIdentifiedPendingOrderPayment(payment) {
65
40
  return isPendingOrderPayment(payment) && getOrderPaymentIdentityKeys(payment).length > 0;
66
41
  }
67
42
  function hasOrderPaymentIdentityOverlap(left, right) {
68
43
  const leftKeys = new Set(getOrderPaymentIdentityKeys(left));
69
- if (leftKeys.size === 0)
70
- return false;
71
- return getOrderPaymentIdentityKeys(right).some((key) => leftKeys.has(key));
44
+ if (leftKeys.size === 0) return false;
45
+ return getOrderPaymentIdentityKeys(right).some(key => leftKeys.has(key));
72
46
  }
73
- function resolveOrderPaymentIdentity(payments, identity, mode = "payment_number") {
47
+ function resolveOrderPaymentIdentity(payments, identity, mode = 'payment_number') {
74
48
  const target = String(identity);
75
- const identityTypes = mode === "payment_number" ? ["payment_number"] : PAYMENT_IDENTITY_TYPES;
76
- const matchesByIndex = /* @__PURE__ */ new Map();
49
+ const identityTypes = mode === 'payment_number' ? ['payment_number'] : PAYMENT_IDENTITY_TYPES;
50
+ const matchesByIndex = new Map();
77
51
  for (const type of identityTypes) {
78
52
  (payments || []).forEach((payment, index) => {
79
53
  const value = normalizePaymentIdentityValue(getPaymentIdentityValue(payment, type));
80
54
  if (value === target && !matchesByIndex.has(index)) {
81
- matchesByIndex.set(index, { index, payment, matchedBy: type });
55
+ matchesByIndex.set(index, {
56
+ index,
57
+ payment,
58
+ matchedBy: type
59
+ });
82
60
  }
83
61
  });
84
62
  }
@@ -90,26 +68,32 @@ function resolveOrderPaymentIdentity(payments, identity, mode = "payment_number"
90
68
  }
91
69
  function ensureOrderPaymentNumber(payment, devicePrefix, createPaymentNumber) {
92
70
  const existing = normalizePaymentIdentityValue(payment.payment_number);
93
- if (existing)
94
- return { ...payment, payment_number: existing };
71
+ if (existing) return {
72
+ ...payment,
73
+ payment_number: existing
74
+ };
95
75
  const uuid = normalizePaymentIdentityValue(payment.uuid) || createPaymentNumber();
96
- const prefix = normalizePaymentIdentityValue(devicePrefix) || "LOCAL";
97
- return { ...payment, payment_number: `${prefix}_${uuid}` };
76
+ const prefix = normalizePaymentIdentityValue(devicePrefix) || 'LOCAL';
77
+ // TODO: 使用 ID Generator 替换当前 UUID 段生成器。
78
+ return {
79
+ ...payment,
80
+ payment_number: `${prefix}_${uuid}`
81
+ };
98
82
  }
99
83
  function mergeOrderPaymentTransactions(current, incoming) {
100
- const records = /* @__PURE__ */ new Map();
101
- const append = (value) => {
102
- if (!Array.isArray(value))
103
- return;
104
- value.forEach((item) => {
105
- const number = item && typeof item === "object" ? String(item.number || "") : "";
106
- const status = item && typeof item === "object" ? item.status : void 0;
107
- if (!number || status !== "success" && status !== "fail")
108
- return;
84
+ const records = new Map();
85
+ const append = value => {
86
+ if (!Array.isArray(value)) return;
87
+ value.forEach(item => {
88
+ const number = item && typeof item === 'object' ? String(item.number || '') : '';
89
+ const status = item && typeof item === 'object' ? item.status : undefined;
90
+ if (!number || status !== 'success' && status !== 'fail') return;
109
91
  const previous = records.get(number);
110
- if ((previous == null ? void 0 : previous.status) === "success" && status === "fail")
111
- return;
112
- records.set(number, { number, status });
92
+ if (previous?.status === 'success' && status === 'fail') return;
93
+ records.set(number, {
94
+ number,
95
+ status
96
+ });
113
97
  });
114
98
  };
115
99
  append(current);
@@ -119,12 +103,9 @@ function mergeOrderPaymentTransactions(current, incoming) {
119
103
  function mergeOrderPaymentRecord(payment, updates) {
120
104
  const currentMetadata = payment.metadata || {};
121
105
  const incomingMetadata = updates.metadata || {};
122
- const transactions = mergeOrderPaymentTransactions(
123
- currentMetadata.transactions,
124
- incomingMetadata.transactions
125
- );
126
- const currentPaid = payment.status === "paid";
127
- const nextStatus = currentPaid && updates.status !== "paid" ? "paid" : updates.status ?? payment.status;
106
+ const transactions = mergeOrderPaymentTransactions(currentMetadata.transactions, incomingMetadata.transactions);
107
+ const currentPaid = payment.status === 'paid';
108
+ const nextStatus = currentPaid && updates.status !== 'paid' ? 'paid' : updates.status ?? payment.status;
128
109
  return {
129
110
  ...payment,
130
111
  ...updates,
@@ -133,30 +114,21 @@ function mergeOrderPaymentRecord(payment, updates) {
133
114
  metadata: {
134
115
  ...currentMetadata,
135
116
  ...incomingMetadata,
136
- ...transactions.length > 0 || Array.isArray(incomingMetadata.transactions) ? { transactions } : {}
117
+ ...(transactions.length > 0 || Array.isArray(incomingMetadata.transactions) ? {
118
+ transactions
119
+ } : {})
137
120
  }
138
121
  };
139
122
  }
140
123
  function mergeOrderPaymentSnapshot(current, incoming) {
141
124
  const currentMetadata = current.metadata || {};
142
125
  const incomingMetadata = incoming.metadata || {};
143
- const currentUniquePaymentNumber = normalizePaymentIdentityValue(
144
- currentMetadata.unique_payment_number
145
- );
146
- const incomingUniquePaymentNumber = normalizePaymentIdentityValue(
147
- incomingMetadata.unique_payment_number
148
- );
149
- const incomingOrderPaymentId = normalizePaymentIdentityValue(
150
- incoming.order_payment_id
151
- );
126
+ const currentUniquePaymentNumber = normalizePaymentIdentityValue(currentMetadata.unique_payment_number);
127
+ const incomingUniquePaymentNumber = normalizePaymentIdentityValue(incomingMetadata.unique_payment_number);
128
+ const incomingOrderPaymentId = normalizePaymentIdentityValue(incoming.order_payment_id);
152
129
  const incomingFallbackPrefix = incomingOrderPaymentId ? `os-fallback:payment:order-payment:${incomingOrderPaymentId}` : null;
153
- const incomingUsesDerivedUniquePaymentNumber = Boolean(
154
- incomingUniquePaymentNumber && incomingFallbackPrefix && (incomingUniquePaymentNumber === incomingFallbackPrefix || incomingUniquePaymentNumber.startsWith(`${incomingFallbackPrefix}:conflict:`))
155
- );
156
- const transactions = mergeOrderPaymentTransactions(
157
- currentMetadata.transactions,
158
- incomingMetadata.transactions
159
- );
130
+ const incomingUsesDerivedUniquePaymentNumber = Boolean(incomingUniquePaymentNumber && incomingFallbackPrefix && (incomingUniquePaymentNumber === incomingFallbackPrefix || incomingUniquePaymentNumber.startsWith(`${incomingFallbackPrefix}:conflict:`)));
131
+ const transactions = mergeOrderPaymentTransactions(currentMetadata.transactions, incomingMetadata.transactions);
160
132
  return {
161
133
  ...current,
162
134
  ...incoming,
@@ -165,8 +137,12 @@ function mergeOrderPaymentSnapshot(current, incoming) {
165
137
  metadata: {
166
138
  ...currentMetadata,
167
139
  ...incomingMetadata,
168
- ...incomingUsesDerivedUniquePaymentNumber && currentUniquePaymentNumber ? { unique_payment_number: currentUniquePaymentNumber } : {},
169
- ...transactions.length > 0 ? { transactions } : {}
140
+ ...(incomingUsesDerivedUniquePaymentNumber && currentUniquePaymentNumber ? {
141
+ unique_payment_number: currentUniquePaymentNumber
142
+ } : {}),
143
+ ...(transactions.length > 0 ? {
144
+ transactions
145
+ } : {})
170
146
  }
171
147
  };
172
148
  }
@@ -191,34 +167,15 @@ function compactOrderPaymentList(payments) {
191
167
  return result;
192
168
  }
193
169
  function mergeOrderPaymentListsByIdentity(existing, incoming, options = {}) {
194
- const existingList = compactOrderPaymentList([...existing || []]);
195
- const incomingList = compactOrderPaymentList([...incoming || []]);
170
+ const existingList = compactOrderPaymentList([...(existing || [])]);
171
+ const incomingList = compactOrderPaymentList([...(incoming || [])]);
196
172
  if (options.preserveUnmatchedExisting) {
197
173
  return compactOrderPaymentList([...existingList, ...incomingList]);
198
174
  }
199
- const mergedIncoming = incomingList.map((incomingPayment) => {
200
- const matchingExisting = existingList.filter((existingPayment) => hasOrderPaymentIdentityOverlap(existingPayment, incomingPayment));
201
- return matchingExisting.reduce(
202
- (merged, existingPayment) => mergeOrderPaymentSnapshot(existingPayment, merged),
203
- incomingPayment
204
- );
175
+ const mergedIncoming = incomingList.map(incomingPayment => {
176
+ const matchingExisting = existingList.filter(existingPayment => hasOrderPaymentIdentityOverlap(existingPayment, incomingPayment));
177
+ return matchingExisting.reduce((merged, existingPayment) => mergeOrderPaymentSnapshot(existingPayment, merged), incomingPayment);
205
178
  });
206
- const preservedExisting = options.preserveUnmatchedExistingWhen ? existingList.filter((existingPayment) => {
207
- var _a;
208
- return !incomingList.some((incomingPayment) => hasOrderPaymentIdentityOverlap(existingPayment, incomingPayment)) && ((_a = options.preserveUnmatchedExistingWhen) == null ? void 0 : _a.call(options, existingPayment));
209
- }) : [];
179
+ const preservedExisting = options.preserveUnmatchedExistingWhen ? existingList.filter(existingPayment => !incomingList.some(incomingPayment => hasOrderPaymentIdentityOverlap(existingPayment, incomingPayment)) && options.preserveUnmatchedExistingWhen?.(existingPayment)) : [];
210
180
  return compactOrderPaymentList([...mergedIncoming, ...preservedExisting]);
211
- }
212
- // Annotate the CommonJS export names for ESM import in node:
213
- 0 && (module.exports = {
214
- ensureOrderPaymentNumber,
215
- getOrderPaymentIdentityKeys,
216
- hasOrderPaymentIdentityOverlap,
217
- isIdentifiedPendingOrderPayment,
218
- isPendingOrderPayment,
219
- mergeOrderPaymentListsByIdentity,
220
- mergeOrderPaymentRecord,
221
- mergeOrderPaymentSnapshot,
222
- mergeOrderPaymentTransactions,
223
- resolveOrderPaymentIdentity
224
- });
181
+ }
@@ -821,7 +821,7 @@ export interface OrderModuleAPI {
821
821
  saveDraft: () => Promise<void>;
822
822
  hydrateTempOrderFromRecord: (record: Record<string, any>, options?: {
823
823
  recalcOnHydrate?: boolean;
824
- source?: 'salesDetail' | 'sessionStorage';
824
+ source?: 'salesDetail' | 'mergedSalesDetail' | 'sessionStorage';
825
825
  }) => Promise<OrderTempOrder>;
826
826
  syncPaymentsToOrder: <T = any>(params: SyncPaymentsToOrderParams) => Promise<SyncPaymentsToOrderResult<T>>;
827
827
  getSalesOrderByLookup: (params: SalesOrderLookupParams) => Promise<any>;
@@ -1,37 +1,89 @@
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/modules/Order/types.ts
20
- var types_exports = {};
21
- __export(types_exports, {
22
- OrderHooks: () => OrderHooks
23
- });
24
- module.exports = __toCommonJS(types_exports);
25
- var OrderHooks = /* @__PURE__ */ ((OrderHooks2) => {
26
- OrderHooks2["OnOrderCreate"] = "order:onOrderCreate";
27
- OrderHooks2["OnOrderUpdate"] = "order:onOrderUpdate";
28
- OrderHooks2["OnOrderCancel"] = "order:onOrderCancel";
29
- OrderHooks2["OnOrderStatusChange"] = "order:onOrderStatusChange";
30
- OrderHooks2["OnOrderCustomerChange"] = "order:onOrderCustomerChange";
31
- OrderHooks2["OnPromotionApplied"] = "order:onPromotionApplied";
32
- return OrderHooks2;
33
- })(OrderHooks || {});
34
- // Annotate the CommonJS export names for ESM import in node:
35
- 0 && (module.exports = {
36
- OrderHooks
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
37
5
  });
6
+ exports.OrderHooks = void 0;
7
+ let OrderHooks = exports.OrderHooks = /*#__PURE__*/function (OrderHooks) {
8
+ OrderHooks["OnOrderCreate"] = "order:onOrderCreate";
9
+ OrderHooks["OnOrderUpdate"] = "order:onOrderUpdate";
10
+ OrderHooks["OnOrderCancel"] = "order:onOrderCancel";
11
+ OrderHooks["OnOrderStatusChange"] = "order:onOrderStatusChange";
12
+ OrderHooks["OnOrderCustomerChange"] = "order:onOrderCustomerChange";
13
+ OrderHooks["OnPromotionApplied"] = "order:onPromotionApplied";
14
+ return OrderHooks;
15
+ }({});
16
+ /**
17
+ * 促销评估器协议(OS 与 PromotionEvaluator 之间的桥接接口)。
18
+ *
19
+ * 与 `pisell_os/src/model/strategy/adapter/promotion/evaluator.ts` 中的
20
+ * `PromotionEvaluator` 实例结构保持兼容。SalesSdkProvider 会从 `appHelper.utils.promotionEvaluator`
21
+ * 读取实例并通过 `setPromotionEvaluator` 注入到 OrderModule。
22
+ *
23
+ * 这里只声明 OrderModule 需要调用的子集,避免反向依赖具体 evaluator 实现。
24
+ */
25
+ /** 赠品解析回调 context(OS → SDK 的请求体) */
26
+ /**
27
+ * 赠品 resolver 返回值。
28
+ *
29
+ * @example
30
+ * return { products: [giftProduct], bookings: [giftBooking] };
31
+ */
32
+ /**
33
+ * 赠品解析回调签名(SDK → OS 的返回值)。
34
+ *
35
+ * - 单选项:SDK 内部自动构造商品,不弹窗
36
+ * - 多选项:SDK 弹窗等用户确认后构造
37
+ * - 用户取消:抛错或返回空数组(OS 视为放弃本次添加)
38
+ *
39
+ * 返回数组时沿用旧协议,只写 tempOrder.products;返回对象时可同时写入预约 bookings。
40
+ */
41
+ /** 未满足的促销策略(购物车底部 alert 渲染源) */
42
+ /** 上一次 applyPromotion 计算出的赠品操作(仅供调试/读取使用) */
43
+ /** onPromotionApplied 事件 payload */
44
+ /**
45
+ * tempOrder 上的下单客户协议字段视图。
46
+ * 这些字段会随订单提交到后端。
47
+ *
48
+ * customer_id 与 OrderTempOrder.customer_id 保持一致(number | null),
49
+ * 调用方若持有 string id(如 ICustomer.id 联合类型),需自行 Number() 转型。
50
+ */
51
+ /**
52
+ * 写入下单客户的协议字段输入。
53
+ * `customer_id` 必传(null 表示无客户);其余字段缺省视为「清空」(全量覆盖语义)。
54
+ */
55
+ /**
56
+ * 下单客户变更事件 payload。
57
+ * - `patch`:tempOrder 上的协议字段视图(会随订单提交)
58
+ * - `snapshot`:UI 富字段快照(仅本地,不随订单提交)
59
+ * 清空时整个 payload 为 null。
60
+ */
61
+ /**
62
+ * 添加商品行时的顺序控制。
63
+ * 默认追加到 products 尾部;预约数量同步可插入到既有预约组的最新行之后,
64
+ * 避免步进器修改数量改变该组展示位置。
65
+ */
66
+ /**
67
+ * 删除商品后的可选位置保持策略。
68
+ * 预约合并行减量时仍删除最新真实行,再把剩余代表行移动到被删除代表行原位置。
69
+ */
70
+ /** 更新购物车行:仅传 SKU 时命中同 SKU 第一行;多行同 SKU 须传 unique_identification_number / 选项指纹等 */
71
+ /** 仅更新购物车行数量;行定位语义与 updateOrderProduct / removeProductFromOrder 保持一致 */
72
+ /**
73
+ * 订单信息
74
+ */
75
+ /**
76
+ * 支付项数据
77
+ */
78
+ /**
79
+ * Checkout 专用订单创建参数
80
+ */
81
+ /**
82
+ * 取消订单参数
83
+ */
84
+ /**
85
+ * 变更预约状态参数
86
+ */
87
+ /**
88
+ * 订单模块 API
89
+ */
@@ -1,99 +1,72 @@
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/modules/Order/utils/bundleDiscountHydration.ts
20
- var bundleDiscountHydration_exports = {};
21
- __export(bundleDiscountHydration_exports, {
22
- expandHydratedProductsForDiscountCollection: () => expandHydratedProductsForDiscountCollection,
23
- restoreHydratedBundleDiscounts: () => restoreHydratedBundleDiscounts
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
24
5
  });
25
- module.exports = __toCommonJS(bundleDiscountHydration_exports);
26
- var BUNDLE_MAP_ID_KEY = "custom_product_bundle_map_id";
6
+ exports.expandHydratedProductsForDiscountCollection = expandHydratedProductsForDiscountCollection;
7
+ exports.restoreHydratedBundleDiscounts = restoreHydratedBundleDiscounts;
8
+ const BUNDLE_MAP_ID_KEY = 'custom_product_bundle_map_id';
27
9
  function getBundleMapId(bundle) {
28
- var _a;
29
- const metadataMapId = (_a = bundle == null ? void 0 : bundle.metadata) == null ? void 0 : _a[BUNDLE_MAP_ID_KEY];
30
- if (metadataMapId !== void 0 && metadataMapId !== null && metadataMapId !== "") {
10
+ const metadataMapId = bundle?.metadata?.[BUNDLE_MAP_ID_KEY];
11
+ if (metadataMapId !== undefined && metadataMapId !== null && metadataMapId !== '') {
31
12
  return String(metadataMapId);
32
13
  }
33
- if ((bundle == null ? void 0 : bundle._id) !== void 0 && bundle._id !== null && bundle._id !== "") {
14
+ if (bundle?._id !== undefined && bundle._id !== null && bundle._id !== '') {
34
15
  return String(bundle._id);
35
16
  }
36
17
  return null;
37
18
  }
38
19
  function getDiscountBundleMapId(discount) {
39
- var _a;
40
- const mapId = (_a = discount == null ? void 0 : discount.metadata) == null ? void 0 : _a[BUNDLE_MAP_ID_KEY];
41
- if (mapId === void 0 || mapId === null || mapId === "")
42
- return null;
20
+ const mapId = discount?.metadata?.[BUNDLE_MAP_ID_KEY];
21
+ if (mapId === undefined || mapId === null || mapId === '') return null;
43
22
  return String(mapId);
44
23
  }
45
24
  function hasSameBundleDiscount(discountList, discount) {
46
- var _a;
47
25
  const targetOrderDiscountId = discount.order_discount_id;
48
- if (targetOrderDiscountId !== void 0 && targetOrderDiscountId !== null) {
49
- return discountList.some((item) => (item == null ? void 0 : item.order_discount_id) === targetOrderDiscountId);
26
+ if (targetOrderDiscountId !== undefined && targetOrderDiscountId !== null) {
27
+ return discountList.some(item => item?.order_discount_id === targetOrderDiscountId);
50
28
  }
51
- const targetResourceId = ((_a = discount == null ? void 0 : discount.discount) == null ? void 0 : _a.resource_id) ?? (discount == null ? void 0 : discount.resource_id) ?? (discount == null ? void 0 : discount.discount_id);
29
+ const targetResourceId = discount?.discount?.resource_id ?? discount?.resource_id ?? discount?.discount_id;
52
30
  const targetMapId = getDiscountBundleMapId(discount);
53
- return discountList.some((item) => {
54
- var _a2;
55
- const resourceId = ((_a2 = item == null ? void 0 : item.discount) == null ? void 0 : _a2.resource_id) ?? (item == null ? void 0 : item.resource_id) ?? (item == null ? void 0 : item.discount_id);
56
- return resourceId === targetResourceId && String((item == null ? void 0 : item.amount) ?? "") === String((discount == null ? void 0 : discount.amount) ?? "") && getDiscountBundleMapId(item) === targetMapId;
31
+ return discountList.some(item => {
32
+ const resourceId = item?.discount?.resource_id ?? item?.resource_id ?? item?.discount_id;
33
+ return resourceId === targetResourceId && String(item?.amount ?? '') === String(discount?.amount ?? '') && getDiscountBundleMapId(item) === targetMapId;
57
34
  });
58
35
  }
59
36
  function restoreHydratedBundleDiscounts(product, normalizeDiscountList) {
60
37
  if (!Array.isArray(product.product_bundle) || !Array.isArray(product.discount_list)) {
61
38
  return product;
62
39
  }
63
- const bundleByMapId = /* @__PURE__ */ new Map();
64
- product.product_bundle.forEach((bundle) => {
65
- if (!bundle || typeof bundle !== "object")
66
- return;
40
+ const bundleByMapId = new Map();
41
+ product.product_bundle.forEach(bundle => {
42
+ if (!bundle || typeof bundle !== 'object') return;
67
43
  const mapId = getBundleMapId(bundle);
68
- if (mapId)
69
- bundleByMapId.set(mapId, bundle);
44
+ if (mapId) bundleByMapId.set(mapId, bundle);
70
45
  });
71
- if (!bundleByMapId.size)
72
- return product;
46
+ if (!bundleByMapId.size) return product;
73
47
  const mainDiscountList = [];
74
48
  const bundleDiscounts = [];
75
- product.discount_list.forEach((discount) => {
49
+ product.discount_list.forEach(discount => {
76
50
  const mapId = getDiscountBundleMapId(discount);
77
51
  if (mapId && bundleByMapId.has(mapId)) {
78
- bundleDiscounts.push({ mapId, discount });
52
+ bundleDiscounts.push({
53
+ mapId,
54
+ discount
55
+ });
79
56
  } else {
80
57
  mainDiscountList.push(discount);
81
58
  }
82
59
  });
83
- if (!bundleDiscounts.length)
84
- return product;
60
+ if (!bundleDiscounts.length) return product;
85
61
  return {
86
62
  ...product,
87
63
  discount_list: normalizeDiscountList(mainDiscountList),
88
- product_bundle: product.product_bundle.map((bundle) => {
89
- if (!bundle || typeof bundle !== "object")
90
- return bundle;
64
+ product_bundle: product.product_bundle.map(bundle => {
65
+ if (!bundle || typeof bundle !== 'object') return bundle;
91
66
  const mapId = getBundleMapId(bundle);
92
- if (!mapId)
93
- return bundle;
94
- const matchedDiscounts = bundleDiscounts.filter((item) => item.mapId === mapId).map((item) => item.discount);
95
- if (!matchedDiscounts.length)
96
- return bundle;
67
+ if (!mapId) return bundle;
68
+ const matchedDiscounts = bundleDiscounts.filter(item => item.mapId === mapId).map(item => item.discount);
69
+ if (!matchedDiscounts.length) return bundle;
97
70
  const currentDiscountList = Array.isArray(bundle.discount_list) ? [...bundle.discount_list] : [];
98
71
  for (const discount of matchedDiscounts) {
99
72
  if (!hasSameBundleDiscount(currentDiscountList, discount)) {
@@ -104,7 +77,7 @@ function restoreHydratedBundleDiscounts(product, normalizeDiscountList) {
104
77
  ...bundle,
105
78
  discount_list: normalizeDiscountList(currentDiscountList),
106
79
  metadata: {
107
- ...bundle.metadata || {},
80
+ ...(bundle.metadata || {}),
108
81
  [BUNDLE_MAP_ID_KEY]: mapId
109
82
  }
110
83
  };
@@ -115,25 +88,19 @@ function expandHydratedProductsForDiscountCollection(products) {
115
88
  const expanded = [];
116
89
  for (const product of products || []) {
117
90
  expanded.push(product);
118
- for (const bundle of (product == null ? void 0 : product.product_bundle) || []) {
119
- if (!Array.isArray(bundle == null ? void 0 : bundle.discount_list) || bundle.discount_list.length === 0)
120
- continue;
91
+ for (const bundle of product?.product_bundle || []) {
92
+ if (!Array.isArray(bundle?.discount_list) || bundle.discount_list.length === 0) continue;
121
93
  expanded.push({
122
94
  ...product,
123
- product_id: bundle.bundle_product_id ?? bundle._bundle_product_id ?? bundle.product_id ?? (product == null ? void 0 : product.product_id),
124
- num: bundle.num ?? bundle.quantity ?? (product == null ? void 0 : product.num),
125
- product_quantity: bundle.quantity ?? bundle.num ?? (product == null ? void 0 : product.product_quantity),
95
+ product_id: bundle.bundle_product_id ?? bundle._bundle_product_id ?? bundle.product_id ?? product?.product_id,
96
+ num: bundle.num ?? bundle.quantity ?? product?.num,
97
+ product_quantity: bundle.quantity ?? bundle.num ?? product?.product_quantity,
126
98
  original_price: bundle.original_price ?? bundle.product_price ?? bundle.price,
127
99
  selling_price: bundle.bundle_selling_price ?? bundle.price,
128
- is_charge_tax: bundle.is_charge_tax ?? (product == null ? void 0 : product.is_charge_tax),
100
+ is_charge_tax: bundle.is_charge_tax ?? product?.is_charge_tax,
129
101
  discount_list: bundle.discount_list
130
102
  });
131
103
  }
132
104
  }
133
105
  return expanded;
134
- }
135
- // Annotate the CommonJS export names for ESM import in node:
136
- 0 && (module.exports = {
137
- expandHydratedProductsForDiscountCollection,
138
- restoreHydratedBundleDiscounts
139
- });
106
+ }