@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,87 +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/solution/BaseSales/utils/transformBaseProductToOrderProduct.ts
20
- var transformBaseProductToOrderProduct_exports = {};
21
- __export(transformBaseProductToOrderProduct_exports, {
22
- transformBaseProductToOrderProduct: () => transformBaseProductToOrderProduct
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(transformBaseProductToOrderProduct_exports);
25
- var import_utils = require("../../../modules/Order/utils");
26
- var import_manualProductDiscount = require("../../../modules/Order/utils/manualProductDiscount");
6
+ exports.transformBaseProductToOrderProduct = transformBaseProductToOrderProduct;
7
+ var _utils = require("../../../modules/Order/utils");
8
+ var _manualProductDiscount = require("../../../modules/Order/utils/manualProductDiscount");
27
9
  function toNumber(value, fallback = 0) {
28
10
  const parsedValue = Number(value);
29
- if (!Number.isFinite(parsedValue))
30
- return fallback;
11
+ if (!Number.isFinite(parsedValue)) return fallback;
31
12
  return parsedValue;
32
13
  }
33
14
  function toProductId(value) {
34
- if (value === null || value === void 0 || value === "")
35
- return null;
15
+ if (value === null || value === undefined || value === '') return null;
36
16
  const parsedValue = Number(value);
37
- if (!Number.isFinite(parsedValue))
38
- return null;
17
+ if (!Number.isFinite(parsedValue)) return null;
39
18
  return parsedValue;
40
19
  }
41
20
  function toSafePositiveInt(value, fallback = 1) {
42
21
  const parsedValue = Math.floor(Number(value));
43
- if (!Number.isFinite(parsedValue) || parsedValue < 1)
44
- return fallback;
22
+ if (!Number.isFinite(parsedValue) || parsedValue < 1) return fallback;
45
23
  return parsedValue;
46
24
  }
47
- function toPriceString(value, fallback = "0.00") {
25
+ function toPriceString(value, fallback = '0.00') {
48
26
  const parsedValue = Number(value);
49
- if (!Number.isFinite(parsedValue))
50
- return fallback;
27
+ if (!Number.isFinite(parsedValue)) return fallback;
51
28
  return parsedValue.toFixed(2);
52
29
  }
53
30
  function isBlankValue(value) {
54
- return value === void 0 || value === null || typeof value === "string" && value.trim() === "";
31
+ return value === undefined || value === null || typeof value === 'string' && value.trim() === '';
55
32
  }
56
33
  function firstNonBlank(...values) {
57
- return values.find((value) => !isBlankValue(value));
34
+ return values.find(value => !isBlankValue(value));
58
35
  }
59
36
  function normalizeOptionItems(optionItems) {
60
- if (!Array.isArray(optionItems))
61
- return [];
62
- return optionItems.map((optionItem) => {
63
- const optionGroupItemId = toNumber((optionItem == null ? void 0 : optionItem.option_group_item_id) ?? (optionItem == null ? void 0 : optionItem.id));
64
- const price = (optionItem == null ? void 0 : optionItem.price) ?? (optionItem == null ? void 0 : optionItem.add_price) ?? 0;
37
+ if (!Array.isArray(optionItems)) return [];
38
+ return optionItems.map(optionItem => {
39
+ const optionGroupItemId = toNumber(optionItem?.option_group_item_id ?? optionItem?.id);
40
+ const price = optionItem?.price ?? optionItem?.add_price ?? 0;
65
41
  return {
66
42
  ...optionItem,
67
43
  option_group_item_id: optionGroupItemId,
68
- option_group_id: toNumber(optionItem == null ? void 0 : optionItem.option_group_id),
69
- num: toSafePositiveInt((optionItem == null ? void 0 : optionItem.num) ?? (optionItem == null ? void 0 : optionItem.quantity), 1),
44
+ option_group_id: toNumber(optionItem?.option_group_id),
45
+ num: toSafePositiveInt(optionItem?.num ?? optionItem?.quantity, 1),
70
46
  add_price: toNumber(price, 0),
71
- price: void 0
47
+ price: undefined
72
48
  };
73
49
  });
74
50
  }
75
51
  function normalizeBundleItems(bundleItems, preferPriceField = false) {
76
- if (!Array.isArray(bundleItems))
77
- return [];
78
- return bundleItems.map((bundleItem) => {
79
- const unitSelling = preferPriceField ? bundleItem.price ?? bundleItem.bundle_selling_price ?? bundleItem.custom_price ?? bundleItem.product_price ?? "0" : bundleItem.bundle_selling_price ?? bundleItem.price ?? bundleItem.custom_price ?? bundleItem.product_price ?? "0";
80
- const unitStr = toPriceString(unitSelling, "0.00");
81
- const num = toSafePositiveInt((bundleItem == null ? void 0 : bundleItem.num) ?? (bundleItem == null ? void 0 : bundleItem.quantity), 1);
52
+ if (!Array.isArray(bundleItems)) return [];
53
+ return bundleItems.map(bundleItem => {
54
+ const unitSelling = preferPriceField ? bundleItem.price ?? bundleItem.bundle_selling_price ?? bundleItem.custom_price ?? bundleItem.product_price ?? '0' : bundleItem.bundle_selling_price ?? bundleItem.price ?? bundleItem.custom_price ?? bundleItem.product_price ?? '0';
55
+ const unitStr = toPriceString(unitSelling, '0.00');
56
+ const num = toSafePositiveInt(bundleItem?.num ?? bundleItem?.quantity, 1);
82
57
  const magnitudeSource = {
83
58
  ...bundleItem,
84
- option: normalizeOptionItems(bundleItem == null ? void 0 : bundleItem.option),
59
+ option: normalizeOptionItems(bundleItem?.option),
85
60
  bundle_selling_price: unitStr,
86
61
  // 计算 markdown 净额时,只传真实毛价;仅有 bundle_selling_price 时按历史净额兜底。
87
62
  price: bundleItem.price ?? bundleItem.custom_price
@@ -89,16 +64,17 @@ function normalizeBundleItems(bundleItems, preferPriceField = false) {
89
64
  const normalizedItem = {
90
65
  ...bundleItem,
91
66
  num,
92
- quantity: (bundleItem == null ? void 0 : bundleItem.quantity) ?? num,
67
+ quantity: bundleItem?.quantity ?? num,
93
68
  // price 保留毛价(markdown 仍为正),由 price_type 决定符号。
94
69
  price: bundleItem.price ?? unitStr,
95
70
  bundle_selling_price: unitStr,
96
71
  original_price: bundleItem.original_price ?? bundleItem.product_price ?? bundleItem.price ?? unitStr,
97
- option: normalizeOptionItems(bundleItem == null ? void 0 : bundleItem.option),
72
+ option: normalizeOptionItems(bundleItem?.option),
98
73
  discount_list: preferPriceField ? [] : bundleItem.discount_list
99
74
  };
100
- normalizedItem.bundle_selling_price = (0, import_utils.getBundleSellingMagnitude)(magnitudeSource).toFixed(2);
101
- if ((normalizedItem.price_type ?? normalizedItem.custom_price_type) === "markdown" && (normalizedItem.price_type_ext === "" || normalizedItem.price_type_ext === void 0 || normalizedItem.price_type_ext === null)) {
75
+ // bundle_selling_price 落「正净额」:markdown = |price| − Σoptions;markup/原价维持原值。
76
+ normalizedItem.bundle_selling_price = (0, _utils.getBundleSellingMagnitude)(magnitudeSource).toFixed(2);
77
+ if ((normalizedItem.price_type ?? normalizedItem.custom_price_type) === 'markdown' && (normalizedItem.price_type_ext === '' || normalizedItem.price_type_ext === undefined || normalizedItem.price_type_ext === null)) {
102
78
  normalizedItem.custom_price = normalizedItem.custom_price ?? normalizedItem.price;
103
79
  normalizedItem.price = normalizedItem.bundle_selling_price;
104
80
  }
@@ -106,91 +82,83 @@ function normalizeBundleItems(bundleItems, preferPriceField = false) {
106
82
  });
107
83
  }
108
84
  function findVariantById(origin, variantId) {
109
- if (!origin || !variantId || variantId <= 0)
110
- return null;
111
- const variants = Array.isArray(origin == null ? void 0 : origin.variant) ? origin.variant : [];
112
- return variants.find((variant) => Number(variant == null ? void 0 : variant.id) === variantId) || null;
85
+ if (!origin || !variantId || variantId <= 0) return null;
86
+ const variants = Array.isArray(origin?.variant) ? origin.variant : [];
87
+ return variants.find(variant => Number(variant?.id) === variantId) || null;
113
88
  }
89
+
90
+ /**
91
+ * 将商品列表原始数据 + 商品详情选择回调转换成 OrderModule.addProductToOrder 入参。
92
+ *
93
+ * 注意:这里不生成 identity,缺省时由 OrderModule 自动补齐。
94
+ */
114
95
  function transformBaseProductToOrderProduct(params) {
115
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
116
- const { payload, fallbackProductId = null } = params;
117
- if (!payload || typeof payload !== "object")
118
- return null;
96
+ const {
97
+ payload,
98
+ fallbackProductId = null
99
+ } = params;
100
+ if (!payload || typeof payload !== 'object') return null;
119
101
  const sourceProduct = params.sourceProduct || params.sourceItem || {};
120
- const productId = toProductId(
121
- payload.product_id ?? payload.id ?? (sourceProduct == null ? void 0 : sourceProduct.product_id) ?? (sourceProduct == null ? void 0 : sourceProduct.id) ?? fallbackProductId
122
- );
123
- if (productId === null)
124
- return null;
125
- const productVariantId = toNumber(
126
- payload.product_variant_id ?? payload.variant_id ?? (sourceProduct == null ? void 0 : sourceProduct.product_variant_id) ?? (sourceProduct == null ? void 0 : sourceProduct.variant_id),
127
- 0
128
- );
129
- const callbackOrigin = payload.origin || ((_a = payload._origin) == null ? void 0 : _a.sourceProduct) || ((_b = payload._origin) == null ? void 0 : _b.sourceItem) || payload._origin || {};
102
+ const productId = toProductId(payload.product_id ?? payload.id ?? sourceProduct?.product_id ?? sourceProduct?.id ?? fallbackProductId);
103
+ if (productId === null) return null;
104
+ const productVariantId = toNumber(payload.product_variant_id ?? payload.variant_id ?? sourceProduct?.product_variant_id ?? sourceProduct?.variant_id, 0);
105
+ const callbackOrigin = payload.origin || payload._origin?.sourceProduct || payload._origin?.sourceItem || payload._origin || {};
130
106
  const origin = {
131
- ...sourceProduct || {},
132
- ...callbackOrigin || {}
107
+ ...(sourceProduct || {}),
108
+ ...(callbackOrigin || {})
133
109
  };
134
110
  const matchedVariant = findVariantById(callbackOrigin, productVariantId) ?? findVariantById(sourceProduct, productVariantId) ?? findVariantById(origin, productVariantId);
135
- const hasPriceOverride = payload.price_override !== void 0 && payload.price_override !== null && payload.price_override !== "";
136
- const catalogSourcePrice = (matchedVariant == null ? void 0 : matchedVariant.price) ?? (matchedVariant == null ? void 0 : matchedVariant.base_price) ?? (origin == null ? void 0 : origin.price) ?? (origin == null ? void 0 : origin.base_price) ?? (sourceProduct == null ? void 0 : sourceProduct.price) ?? (sourceProduct == null ? void 0 : sourceProduct.selling_price) ?? (sourceProduct == null ? void 0 : sourceProduct.base_price);
137
- const sourceProductPrice = toPriceString(
138
- hasPriceOverride ? catalogSourcePrice ?? payload.price ?? payload.selling_price : payload.price ?? payload.selling_price ?? catalogSourcePrice,
139
- "0.00"
140
- );
141
- const explicitLineTotal = payload.line_total ?? payload.total ?? ((_c = payload._extend) == null ? void 0 : _c.total);
111
+ const hasPriceOverride = payload.price_override !== undefined && payload.price_override !== null && payload.price_override !== '';
112
+ // 手动改价后 payload.price 是分摊后的主商品售价,不能再作为券前 source。
113
+ // 此时优先从商品/variant 快照读取目录价;售价仍由 line_total - bundle 推导。
114
+ const catalogSourcePrice = matchedVariant?.price ?? matchedVariant?.base_price ?? origin?.price ?? origin?.base_price ?? sourceProduct?.price ?? sourceProduct?.selling_price ?? sourceProduct?.base_price;
115
+ const sourceProductPrice = toPriceString(hasPriceOverride ? catalogSourcePrice ?? payload.price ?? payload.selling_price : payload.price ?? payload.selling_price ?? catalogSourcePrice, '0.00');
116
+ const explicitLineTotal = payload.line_total ?? payload.total ?? payload._extend?.total;
142
117
  const hasExplicitLineTotal = Number.isFinite(Number(explicitLineTotal));
143
118
  const lineCompositeTotal = toPriceString(explicitLineTotal, sourceProductPrice);
144
- const productOptionItem = (0, import_utils.normalizeProductSkuOptions)(
145
- normalizeOptionItems(
146
- ((_d = payload.product_sku) == null ? void 0 : _d.option) ?? payload.option ?? payload.options ?? payload.product_option_item
147
- )
148
- );
149
- const productBundle = normalizeBundleItems(
150
- payload.bundle ?? payload.product_bundle,
151
- hasPriceOverride
152
- );
119
+ const productOptionItem = (0, _utils.normalizeProductSkuOptions)(normalizeOptionItems(payload.product_sku?.option ?? payload.option ?? payload.options ?? payload.product_option_item));
120
+ const productBundle = normalizeBundleItems(payload.bundle ?? payload.product_bundle, hasPriceOverride);
121
+ // `payload.unique` 是业务侧商品/票务标识,可能在连续加同一商品时重复;
122
+ // 行级唯一值只接受显式协议字段,缺省交给 OrderModule 生成。
153
123
  const uniqueIdentificationNumber = payload.unique_identification_number;
154
124
  const resolvedQuantity = toSafePositiveInt(payload.quantity ?? payload.num, 1);
155
- const originTotal = (0, import_manualProductDiscount.resolveManualDiscountOriginTotal)({
125
+ const originTotal = (0, _manualProductDiscount.resolveManualDiscountOriginTotal)({
156
126
  originTotal: payload.origin_total,
157
- extendOriginTotal: (_e = payload._extend) == null ? void 0 : _e.origin_total,
158
- originExtendOriginTotal: (_f = origin == null ? void 0 : origin._extend) == null ? void 0 : _f.origin_total,
159
- sourceExtendOriginTotal: (_g = sourceProduct == null ? void 0 : sourceProduct._extend) == null ? void 0 : _g.origin_total,
160
- catalogUnitPrice: (origin == null ? void 0 : origin.base_price) ?? (origin == null ? void 0 : origin.price) ?? (sourceProduct == null ? void 0 : sourceProduct.base_price) ?? (sourceProduct == null ? void 0 : sourceProduct.price),
127
+ extendOriginTotal: payload._extend?.origin_total,
128
+ originExtendOriginTotal: origin?._extend?.origin_total,
129
+ sourceExtendOriginTotal: sourceProduct?._extend?.origin_total,
130
+ catalogUnitPrice: origin?.base_price ?? origin?.price ?? sourceProduct?.base_price ?? sourceProduct?.price,
161
131
  quantity: resolvedQuantity
162
132
  });
163
- const sellingTotal = Number(
164
- payload.line_total ?? payload.total ?? ((_h = payload._extend) == null ? void 0 : _h.total) ?? lineCompositeTotal
165
- );
166
- const discountReason = (0, import_manualProductDiscount.resolveManualDiscountReasonFromSources)({
133
+ const sellingTotal = Number(payload.line_total ?? payload.total ?? payload._extend?.total ?? lineCompositeTotal);
134
+ const discountReason = (0, _manualProductDiscount.resolveManualDiscountReasonFromSources)({
167
135
  discountReason: payload.discount_reason,
168
- extendDiscountReason: (_i = payload._extend) == null ? void 0 : _i.discount_reason,
169
- originExtendDiscountReason: (_j = origin == null ? void 0 : origin._extend) == null ? void 0 : _j.discount_reason
136
+ extendDiscountReason: payload._extend?.discount_reason,
137
+ originExtendDiscountReason: origin?._extend?.discount_reason
170
138
  });
171
139
  const lineOriginalPrice = hasPriceOverride && Number.isFinite(originTotal) ? toPriceString(originTotal) : lineCompositeTotal;
172
- const manualDiscountList = (0, import_manualProductDiscount.shouldBuildManualProductDiscount)({
140
+ const manualDiscountList = (0, _manualProductDiscount.shouldBuildManualProductDiscount)({
173
141
  hasPriceOverride,
174
142
  originTotal,
175
143
  sellingTotal
176
- }) ? (0, import_manualProductDiscount.mergeManualProductDiscountIntoList)(
177
- payload.discount_list,
178
- (0, import_manualProductDiscount.buildManualProductDiscountItem)({
179
- originTotal: Number.isFinite(originTotal) ? originTotal : Number(lineOriginalPrice),
180
- sellingTotal: Number.isFinite(sellingTotal) ? sellingTotal : Number(lineCompositeTotal),
181
- quantity: resolvedQuantity,
182
- message: discountReason,
183
- discountway: (_k = payload._extend) == null ? void 0 : _k.discountway,
184
- discount_per: (_l = payload._extend) == null ? void 0 : _l.discount_per
185
- })
186
- ) : payload.discount_list || [];
187
- const optionSum = (0, import_utils.sumOptionUnitPrice)(productOptionItem).toNumber();
144
+ }) ? (0, _manualProductDiscount.mergeManualProductDiscountIntoList)(payload.discount_list, (0, _manualProductDiscount.buildManualProductDiscountItem)({
145
+ originTotal: Number.isFinite(originTotal) ? originTotal : Number(lineOriginalPrice),
146
+ sellingTotal: Number.isFinite(sellingTotal) ? sellingTotal : Number(lineCompositeTotal),
147
+ quantity: resolvedQuantity,
148
+ message: discountReason,
149
+ discountway: payload._extend?.discountway,
150
+ discount_per: payload._extend?.discount_per
151
+ })) : payload.discount_list || [];
152
+
153
+ // v2:source 不含 option;main_product_* 含 option(与 normalizeOrderProduct 一致)
154
+ const optionSum = (0, _utils.sumOptionUnitPrice)(productOptionItem).toNumber();
188
155
  const mainProductOriginalPrice = toPriceString(Number(sourceProductPrice) + optionSum);
189
- const bundleOnlyComposite = (0, import_utils.composeLinePrice)({ mainPrice: 0, bundle: productBundle });
156
+ const bundleOnlyComposite = (0, _utils.composeLinePrice)({
157
+ mainPrice: 0,
158
+ bundle: productBundle
159
+ });
190
160
  const derivedMainSelling = hasExplicitLineTotal ? Number(lineCompositeTotal) - Number(bundleOnlyComposite) : Number(mainProductOriginalPrice);
191
- const mainProductSellingPrice = toPriceString(
192
- Number.isFinite(derivedMainSelling) && derivedMainSelling >= 0 ? derivedMainSelling : Number(mainProductOriginalPrice)
193
- );
161
+ const mainProductSellingPrice = toPriceString(Number.isFinite(derivedMainSelling) && derivedMainSelling >= 0 ? derivedMainSelling : Number(mainProductOriginalPrice));
194
162
  const metadata = {
195
163
  unique: payload.unique,
196
164
  session: payload.session,
@@ -205,54 +173,49 @@ function transformBaseProductToOrderProduct(params) {
205
173
  main_product_selling_price: mainProductSellingPrice,
206
174
  main_product_original_price: mainProductOriginalPrice,
207
175
  price_schema_version: 2,
208
- holder_config: sourceProduct == null ? void 0 : sourceProduct.holder_config,
209
- ...hasPriceOverride ? {
176
+ holder_config: sourceProduct?.holder_config,
177
+ ...(hasPriceOverride ? {
210
178
  price_override: String(payload.price_override),
211
179
  is_manual_discount: 1
212
- } : {},
213
- ...payload.bundle_edit !== void 0 ? { bundle_edit: payload.bundle_edit } : {}
180
+ } : {}),
181
+ ...(payload.bundle_edit !== undefined ? {
182
+ bundle_edit: payload.bundle_edit
183
+ } : {})
214
184
  };
215
185
  if (uniqueIdentificationNumber) {
216
186
  metadata.unique_identification_number = String(uniqueIdentificationNumber);
217
187
  }
188
+ // 从源头补充商品多语言标题
218
189
  const productTitle = {
219
- ...(sourceProduct == null ? void 0 : sourceProduct.title_i18n) || {},
220
- original: (sourceProduct == null ? void 0 : sourceProduct.original_title) || (sourceProduct == null ? void 0 : sourceProduct.title) || ""
190
+ ...(sourceProduct?.title_i18n || {}),
191
+ original: sourceProduct?.original_title || sourceProduct?.title || ''
221
192
  };
222
193
  return {
223
194
  product_id: productId,
224
195
  product_variant_id: productVariantId,
225
- unique_identification_number: uniqueIdentificationNumber ? String(uniqueIdentificationNumber) : void 0,
196
+ unique_identification_number: uniqueIdentificationNumber ? String(uniqueIdentificationNumber) : undefined,
226
197
  num: resolvedQuantity,
227
198
  product_sku: {
228
- ...payload.product_sku && typeof payload.product_sku === "object" ? payload.product_sku : {},
199
+ ...(payload.product_sku && typeof payload.product_sku === 'object' ? payload.product_sku : {}),
229
200
  option: productOptionItem
230
201
  },
231
202
  product_bundle: productBundle,
232
203
  discount_list: manualDiscountList,
233
- ...payload.bundle_edit !== void 0 ? { bundle_edit: payload.bundle_edit } : {},
204
+ ...(payload.bundle_edit !== undefined ? {
205
+ bundle_edit: payload.bundle_edit
206
+ } : {}),
234
207
  // 折后行价由 normalizeOrderProduct 按 main + bundle 合成;手动改价时 bundle 已为分摊后单价
235
208
  selling_price: lineCompositeTotal,
236
209
  original_price: lineOriginalPrice,
237
- tax_fee: toPriceString(
238
- payload.tax_fee ?? (matchedVariant == null ? void 0 : matchedVariant.tax_fee) ?? (origin == null ? void 0 : origin.tax_fee) ?? (sourceProduct == null ? void 0 : sourceProduct.tax_fee),
239
- "0.00"
240
- ),
241
- is_charge_tax: toNumber(
242
- payload.is_charge_tax ?? (matchedVariant == null ? void 0 : matchedVariant.is_charge_tax) ?? (origin == null ? void 0 : origin.is_charge_tax) ?? (sourceProduct == null ? void 0 : sourceProduct.is_charge_tax),
243
- 0
244
- ),
210
+ tax_fee: toPriceString(payload.tax_fee ?? matchedVariant?.tax_fee ?? origin?.tax_fee ?? sourceProduct?.tax_fee, '0.00'),
211
+ is_charge_tax: toNumber(payload.is_charge_tax ?? matchedVariant?.is_charge_tax ?? origin?.is_charge_tax ?? sourceProduct?.is_charge_tax, 0),
245
212
  metadata,
246
- note: payload.note != null ? String(payload.note) : "",
213
+ note: payload.note != null ? String(payload.note) : '',
247
214
  product_title: productTitle,
248
- product_cover: firstNonBlank(matchedVariant == null ? void 0 : matchedVariant.cover, sourceProduct == null ? void 0 : sourceProduct.cover),
215
+ product_cover: firstNonBlank(matchedVariant?.cover, sourceProduct?.cover),
249
216
  _origin: {
250
- ...sourceProduct || {},
217
+ ...(sourceProduct || {}),
251
218
  callbackData: payload
252
219
  }
253
220
  };
254
- }
255
- // Annotate the CommonJS export names for ESM import in node:
256
- 0 && (module.exports = {
257
- transformBaseProductToOrderProduct
258
- });
221
+ }