@pisell/pisellos 2.3.74 → 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 (276) 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.js +36 -64
  11. package/dist/modules/Payment/index.js +97 -162
  12. package/dist/modules/Rules/index.js +1 -4
  13. package/dist/modules/Schedule/index.js +0 -1
  14. package/dist/modules/Schedule/utils.js +0 -1
  15. package/dist/modules/Step/index.js +0 -1
  16. package/dist/plugins/request.js +1 -4
  17. package/dist/plugins/window.js +2 -6
  18. package/dist/server/index.js +97 -129
  19. package/dist/server/modules/menu/index.js +32 -41
  20. package/dist/server/modules/order/index.js +2 -4
  21. package/dist/server/modules/products/index.js +24 -42
  22. package/dist/server/modules/quotation/index.js +29 -38
  23. package/dist/server/modules/resource/index.js +3 -4
  24. package/dist/server/modules/schedule/index.js +27 -35
  25. package/dist/server/utils/product.js +0 -1
  26. package/dist/solution/BaseSales/index.js +38 -41
  27. package/dist/solution/BookingByStep/index.js +7 -59
  28. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  29. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  30. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  31. package/dist/solution/BookingTicket/index.js +0 -2
  32. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  33. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  34. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  35. package/dist/solution/BuyTickets/index.js +9 -12
  36. package/dist/solution/Checkout/index.js +177 -252
  37. package/dist/solution/Checkout/utils/index.js +4 -16
  38. package/dist/solution/RegisterAndLogin/index.js +30 -76
  39. package/dist/solution/ScanOrder/index.js +50 -60
  40. package/dist/solution/ShopDiscount/index.js +2 -7
  41. package/dist/solution/VenueBooking/index.js +45 -55
  42. package/dist/utils/task.js +15 -18
  43. package/dist/utils/watch.js +0 -1
  44. package/lib/apis/picoding.js +2 -0
  45. package/lib/core/index.js +134 -134
  46. package/lib/effects/index.js +46 -57
  47. package/lib/index.js +82 -49
  48. package/lib/model/index.js +14 -21
  49. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  50. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  51. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  52. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  53. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  54. package/lib/model/strategy/adapter/index.js +100 -64
  55. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  56. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  57. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  58. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  59. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  60. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  61. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  62. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  63. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  64. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  65. package/lib/model/strategy/adapter/type.js +4 -16
  66. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  67. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  68. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  69. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  70. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  71. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  72. package/lib/model/strategy/engine.js +270 -168
  73. package/lib/model/strategy/index.js +49 -34
  74. package/lib/model/strategy/strategy-example.js +243 -239
  75. package/lib/model/strategy/type.js +100 -40
  76. package/lib/modules/Account/index.js +39 -53
  77. package/lib/modules/Account/types.js +20 -33
  78. package/lib/modules/AccountList/index.js +116 -154
  79. package/lib/modules/AccountList/types.js +30 -31
  80. package/lib/modules/AccountList/utils.js +18 -30
  81. package/lib/modules/BaseModule.js +23 -42
  82. package/lib/modules/BookingContext/index.js +158 -136
  83. package/lib/modules/BookingContext/types.js +46 -32
  84. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  85. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  86. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  87. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  88. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  89. package/lib/modules/BookingContext/utils/index.js +124 -41
  90. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  91. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  92. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  93. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  94. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  95. package/lib/modules/BookingContext/utils/resources.js +209 -167
  96. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  97. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  98. package/lib/modules/Cart/index.js +170 -124
  99. package/lib/modules/Cart/types.js +46 -51
  100. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  101. package/lib/modules/Cart/utils/cartDate.js +56 -61
  102. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  103. package/lib/modules/Cart/utils/cartNote.js +27 -32
  104. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  105. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  106. package/lib/modules/Cart/utils/cartResource.js +70 -78
  107. package/lib/modules/Cart/utils/changePrice.js +22 -50
  108. package/lib/modules/Cart/utils/index.js +106 -48
  109. package/lib/modules/Customer/constants.js +13 -34
  110. package/lib/modules/Customer/index.js +235 -172
  111. package/lib/modules/Customer/types.js +38 -35
  112. package/lib/modules/Date/index.js +116 -115
  113. package/lib/modules/Date/types.js +16 -28
  114. package/lib/modules/Date/utils.js +174 -123
  115. package/lib/modules/Discount/index.js +122 -127
  116. package/lib/modules/Discount/types.js +9 -31
  117. package/lib/modules/Guests/index.js +30 -56
  118. package/lib/modules/Guests/types.js +23 -33
  119. package/lib/modules/Holder/index.js +209 -189
  120. package/lib/modules/Holder/types.js +4 -16
  121. package/lib/modules/Holder/utils.js +20 -49
  122. package/lib/modules/OpenData/index.js +70 -76
  123. package/lib/modules/OpenData/types.js +4 -16
  124. package/lib/modules/OpenData/utils.js +44 -78
  125. package/lib/modules/Order/index.js +1713 -2118
  126. package/lib/modules/Order/payment-utils.js +77 -120
  127. package/lib/modules/Order/types.js +88 -35
  128. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  129. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  130. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  131. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  132. package/lib/modules/Order/utils.js +814 -647
  133. package/lib/modules/Payment/cash.js +20 -33
  134. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  135. package/lib/modules/Payment/eftpos.js +16 -30
  136. package/lib/modules/Payment/index.js +532 -399
  137. package/lib/modules/Payment/mx51.js +1 -0
  138. package/lib/modules/Payment/types.js +230 -108
  139. package/lib/modules/Payment/utils.js +52 -51
  140. package/lib/modules/Payment/walletpass.js +485 -660
  141. package/lib/modules/Product/index.js +51 -46
  142. package/lib/modules/Product/types.js +4 -16
  143. package/lib/modules/Product/utils.js +32 -33
  144. package/lib/modules/ProductList/index.js +113 -123
  145. package/lib/modules/ProductList/types.js +9 -31
  146. package/lib/modules/Quotation/index.js +81 -118
  147. package/lib/modules/Quotation/types.js +4 -16
  148. package/lib/modules/Resource/index.js +27 -59
  149. package/lib/modules/Resource/types.js +22 -32
  150. package/lib/modules/Resource/utils.js +30 -38
  151. package/lib/modules/ResourcePlanner/index.js +25 -23
  152. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  153. package/lib/modules/ResourcePlanner/planner.js +589 -770
  154. package/lib/modules/ResourcePlanner/types.js +10 -29
  155. package/lib/modules/Rules/index.js +1218 -959
  156. package/lib/modules/Rules/types.js +17 -40
  157. package/lib/modules/SalesSummary/index.js +85 -90
  158. package/lib/modules/SalesSummary/types.js +4 -16
  159. package/lib/modules/SalesSummary/utils.js +355 -430
  160. package/lib/modules/ScanOrderLogger/index.js +59 -79
  161. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  162. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  163. package/lib/modules/ScanOrderLogger/types.js +4 -16
  164. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  165. package/lib/modules/Schedule/index.js +100 -114
  166. package/lib/modules/Schedule/type.js +4 -16
  167. package/lib/modules/Schedule/types.js +4 -16
  168. package/lib/modules/Schedule/utils.js +433 -291
  169. package/lib/modules/Step/index.js +40 -52
  170. package/lib/modules/Step/tyeps.js +4 -16
  171. package/lib/modules/Summary/index.js +66 -71
  172. package/lib/modules/Summary/types.js +4 -16
  173. package/lib/modules/Summary/utils.js +773 -418
  174. package/lib/modules/SurchargeList/index.js +46 -60
  175. package/lib/modules/SurchargeList/types.js +4 -16
  176. package/lib/modules/index.js +245 -63
  177. package/lib/plugins/app.js +4 -16
  178. package/lib/plugins/index.js +36 -25
  179. package/lib/plugins/request.js +137 -126
  180. package/lib/plugins/shopStore.js +4 -16
  181. package/lib/plugins/user.js +4 -16
  182. package/lib/plugins/window.js +171 -179
  183. package/lib/server/index.js +3050 -2665
  184. package/lib/server/modules/floor-plan/index.js +118 -134
  185. package/lib/server/modules/floor-plan/types.js +15 -30
  186. package/lib/server/modules/index.js +106 -68
  187. package/lib/server/modules/menu/index.js +142 -122
  188. package/lib/server/modules/menu/types.js +18 -31
  189. package/lib/server/modules/order/index.js +784 -1002
  190. package/lib/server/modules/order/types.js +122 -33
  191. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  192. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  193. package/lib/server/modules/payment/index.js +59 -83
  194. package/lib/server/modules/payment/types.js +4 -16
  195. package/lib/server/modules/products/index.js +583 -471
  196. package/lib/server/modules/products/types.js +44 -34
  197. package/lib/server/modules/quotation/index.js +137 -172
  198. package/lib/server/modules/quotation/types.js +21 -31
  199. package/lib/server/modules/resource/index.js +220 -186
  200. package/lib/server/modules/resource/types.js +42 -33
  201. package/lib/server/modules/schedule/index.js +135 -123
  202. package/lib/server/modules/schedule/types.js +14 -21
  203. package/lib/server/modules/schedule/utils.js +334 -163
  204. package/lib/server/types.js +4 -16
  205. package/lib/server/utils/index.js +25 -23
  206. package/lib/server/utils/product.js +196 -139
  207. package/lib/server/utils/schedule.js +34 -41
  208. package/lib/server/utils/small-ticket.js +479 -456
  209. package/lib/server/utils/time.js +40 -49
  210. package/lib/solution/BaseSales/index.js +1186 -1410
  211. package/lib/solution/BaseSales/types.js +42 -38
  212. package/lib/solution/BaseSales/utils/cartPromotion.js +642 -498
  213. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  214. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  215. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  216. package/lib/solution/BaseSales/utils.js +158 -143
  217. package/lib/solution/BookingByStep/index.js +1527 -1340
  218. package/lib/solution/BookingByStep/types.js +40 -99
  219. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  220. package/lib/solution/BookingByStep/utils/products.js +42 -52
  221. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  222. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  223. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  224. package/lib/solution/BookingTicket/index.js +607 -522
  225. package/lib/solution/BookingTicket/types.js +99 -77
  226. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  227. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  228. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  229. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  230. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  231. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  232. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  233. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  234. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  235. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  236. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  237. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  238. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  239. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  240. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  241. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  242. package/lib/solution/BuyTickets/index.js +67 -70
  243. package/lib/solution/BuyTickets/types.js +22 -38
  244. package/lib/solution/Checkout/index.js +1451 -1158
  245. package/lib/solution/Checkout/types.js +91 -61
  246. package/lib/solution/Checkout/utils/index.js +228 -156
  247. package/lib/solution/PlaceOrder/index.js +55 -0
  248. package/lib/solution/RegisterAndLogin/config.js +493 -460
  249. package/lib/solution/RegisterAndLogin/index.js +633 -630
  250. package/lib/solution/RegisterAndLogin/types.js +189 -76
  251. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  252. package/lib/solution/Sales/index.js +328 -324
  253. package/lib/solution/Sales/types.js +27 -33
  254. package/lib/solution/ScanOrder/index.js +832 -864
  255. package/lib/solution/ScanOrder/types.js +33 -34
  256. package/lib/solution/ScanOrder/utils.js +409 -374
  257. package/lib/solution/ShopDiscount/index.js +226 -232
  258. package/lib/solution/ShopDiscount/types.js +15 -37
  259. package/lib/solution/ShopDiscount/utils.js +300 -172
  260. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  261. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  262. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  263. package/lib/solution/VenueBooking/index.js +811 -879
  264. package/lib/solution/VenueBooking/types.js +19 -39
  265. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  266. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  267. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  268. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  269. package/lib/solution/VenueBooking/utils.js +130 -67
  270. package/lib/solution/index.js +124 -41
  271. package/lib/store/createStore.js +32 -29
  272. package/lib/types/index.js +4 -16
  273. package/lib/utils/payment-number.js +26 -46
  274. package/lib/utils/task.js +36 -36
  275. package/lib/utils/watch.js +81 -47
  276. 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
+ }
@@ -1,37 +1,90 @@
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
+ * - `source`:缺省表示真实业务变更;`detailHydrate` 仅表示打开详情时快照已就绪
60
+ * 清空时整个 payload 为 null。
61
+ */
62
+ /**
63
+ * 添加商品行时的顺序控制。
64
+ * 默认追加到 products 尾部;预约数量同步可插入到既有预约组的最新行之后,
65
+ * 避免步进器修改数量改变该组展示位置。
66
+ */
67
+ /**
68
+ * 删除商品后的可选位置保持策略。
69
+ * 预约合并行减量时仍删除最新真实行,再把剩余代表行移动到被删除代表行原位置。
70
+ */
71
+ /** 更新购物车行:仅传 SKU 时命中同 SKU 第一行;多行同 SKU 须传 unique_identification_number / 选项指纹等 */
72
+ /** 仅更新购物车行数量;行定位语义与 updateOrderProduct / removeProductFromOrder 保持一致 */
73
+ /**
74
+ * 订单信息
75
+ */
76
+ /**
77
+ * 支付项数据
78
+ */
79
+ /**
80
+ * Checkout 专用订单创建参数
81
+ */
82
+ /**
83
+ * 取消订单参数
84
+ */
85
+ /**
86
+ * 变更预约状态参数
87
+ */
88
+ /**
89
+ * 订单模块 API
90
+ */
@@ -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
+ }