@pisell/pisellos 0.10.15 → 0.10.16

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 (299) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/promotion/index.js +0 -9
  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 +75 -91
  12. package/dist/modules/Order/types.d.ts +5 -1
  13. package/dist/modules/Order/utils.js +7 -1
  14. package/dist/modules/Payment/index.js +97 -162
  15. package/dist/modules/Product/types.d.ts +2 -0
  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.js +1 -4
  21. package/dist/plugins/window.js +2 -6
  22. package/dist/server/index.js +97 -129
  23. package/dist/server/modules/menu/index.js +32 -41
  24. package/dist/server/modules/order/index.js +2 -4
  25. package/dist/server/modules/products/index.js +24 -42
  26. package/dist/server/modules/quotation/index.js +29 -38
  27. package/dist/server/modules/resource/index.js +3 -4
  28. package/dist/server/modules/schedule/index.js +27 -35
  29. package/dist/server/utils/product.js +0 -1
  30. package/dist/solution/BaseSales/index.js +100 -72
  31. package/dist/solution/BaseSales/types.d.ts +2 -0
  32. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  33. package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
  34. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  35. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +7 -1
  36. package/dist/solution/BaseSales/utils.js +6 -3
  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 +8 -4
  43. package/dist/solution/BookingTicket/utils/addProductDecision.js +3 -1
  44. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  45. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  46. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  47. package/dist/solution/BuyTickets/index.js +9 -12
  48. package/dist/solution/Checkout/index.js +177 -252
  49. package/dist/solution/Checkout/utils/index.js +4 -16
  50. package/dist/solution/RegisterAndLogin/index.js +30 -76
  51. package/dist/solution/ScanOrder/index.js +50 -60
  52. package/dist/solution/ScanOrder/types.d.ts +2 -0
  53. package/dist/solution/ScanOrder/utils.js +6 -3
  54. package/dist/solution/ShopDiscount/index.js +2 -7
  55. package/dist/solution/VenueBooking/index.js +45 -55
  56. package/dist/utils/task.js +15 -18
  57. package/dist/utils/watch.js +0 -1
  58. package/lib/apis/picoding.js +2 -0
  59. package/lib/core/index.js +131 -131
  60. package/lib/effects/index.js +46 -57
  61. package/lib/index.js +82 -49
  62. package/lib/model/index.js +14 -21
  63. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  64. package/lib/model/strategy/adapter/dataVariant/evaluator.js +209 -315
  65. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  66. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  67. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  68. package/lib/model/strategy/adapter/index.js +100 -64
  69. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  70. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  71. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  72. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  73. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  74. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  75. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  76. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  77. package/lib/model/strategy/adapter/promotion/index.js +43 -48
  78. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  79. package/lib/model/strategy/adapter/type.js +4 -16
  80. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  81. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  82. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  83. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  84. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  85. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  86. package/lib/model/strategy/engine.js +270 -168
  87. package/lib/model/strategy/index.js +49 -34
  88. package/lib/model/strategy/strategy-example.js +243 -239
  89. package/lib/model/strategy/type.js +100 -40
  90. package/lib/modules/Account/index.js +39 -53
  91. package/lib/modules/Account/types.js +20 -33
  92. package/lib/modules/AccountList/index.js +116 -154
  93. package/lib/modules/AccountList/types.js +30 -31
  94. package/lib/modules/AccountList/utils.js +18 -30
  95. package/lib/modules/BaseModule.js +23 -42
  96. package/lib/modules/BookingContext/index.js +158 -136
  97. package/lib/modules/BookingContext/types.js +46 -32
  98. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  99. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  100. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  101. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  102. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  103. package/lib/modules/BookingContext/utils/index.js +124 -41
  104. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  105. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  106. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  107. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  108. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  109. package/lib/modules/BookingContext/utils/resources.js +209 -167
  110. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  111. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  112. package/lib/modules/Cart/index.js +170 -124
  113. package/lib/modules/Cart/types.js +46 -51
  114. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  115. package/lib/modules/Cart/utils/cartDate.js +56 -61
  116. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  117. package/lib/modules/Cart/utils/cartNote.js +27 -32
  118. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  119. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  120. package/lib/modules/Cart/utils/cartResource.js +70 -78
  121. package/lib/modules/Cart/utils/changePrice.js +22 -50
  122. package/lib/modules/Cart/utils/index.js +106 -48
  123. package/lib/modules/Customer/constants.js +13 -34
  124. package/lib/modules/Customer/index.js +235 -172
  125. package/lib/modules/Customer/types.js +38 -35
  126. package/lib/modules/Date/index.js +116 -115
  127. package/lib/modules/Date/types.js +16 -28
  128. package/lib/modules/Date/utils.js +174 -123
  129. package/lib/modules/Discount/index.js +133 -143
  130. package/lib/modules/Discount/types.js +9 -31
  131. package/lib/modules/Guests/index.js +30 -56
  132. package/lib/modules/Guests/types.js +23 -33
  133. package/lib/modules/Holder/index.js +209 -189
  134. package/lib/modules/Holder/types.js +4 -16
  135. package/lib/modules/Holder/utils.js +20 -49
  136. package/lib/modules/OpenData/index.js +70 -76
  137. package/lib/modules/OpenData/types.js +4 -16
  138. package/lib/modules/OpenData/utils.js +44 -78
  139. package/lib/modules/Order/index.d.ts +1 -1
  140. package/lib/modules/Order/index.js +1810 -2238
  141. package/lib/modules/Order/payment-utils.js +77 -120
  142. package/lib/modules/Order/types.d.ts +5 -1
  143. package/lib/modules/Order/types.js +87 -35
  144. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  145. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  146. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  147. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  148. package/lib/modules/Order/utils/virtualSettlement.js +120 -171
  149. package/lib/modules/Order/utils.js +834 -668
  150. package/lib/modules/Payment/cash.js +20 -33
  151. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  152. package/lib/modules/Payment/eftpos.js +16 -30
  153. package/lib/modules/Payment/index.js +532 -399
  154. package/lib/modules/Payment/mx51.js +1 -0
  155. package/lib/modules/Payment/types.js +230 -108
  156. package/lib/modules/Payment/utils.js +52 -51
  157. package/lib/modules/Payment/walletpass.js +485 -660
  158. package/lib/modules/Product/index.js +51 -46
  159. package/lib/modules/Product/types.d.ts +2 -0
  160. package/lib/modules/Product/types.js +4 -16
  161. package/lib/modules/Product/utils.js +32 -33
  162. package/lib/modules/ProductList/index.js +138 -161
  163. package/lib/modules/ProductList/types.js +9 -31
  164. package/lib/modules/Quotation/index.js +66 -100
  165. package/lib/modules/Quotation/types.js +4 -16
  166. package/lib/modules/Resource/index.js +27 -59
  167. package/lib/modules/Resource/types.js +22 -32
  168. package/lib/modules/Resource/utils.js +30 -38
  169. package/lib/modules/ResourcePlanner/index.js +25 -23
  170. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  171. package/lib/modules/ResourcePlanner/planner.js +591 -772
  172. package/lib/modules/ResourcePlanner/types.js +10 -29
  173. package/lib/modules/Rules/index.js +1218 -959
  174. package/lib/modules/Rules/types.js +17 -40
  175. package/lib/modules/SalesSummary/index.js +78 -89
  176. package/lib/modules/SalesSummary/types.js +4 -16
  177. package/lib/modules/SalesSummary/utils.js +359 -442
  178. package/lib/modules/ScanOrderLogger/index.js +59 -79
  179. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  180. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  181. package/lib/modules/ScanOrderLogger/types.js +4 -16
  182. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  183. package/lib/modules/Schedule/index.js +100 -114
  184. package/lib/modules/Schedule/type.js +4 -16
  185. package/lib/modules/Schedule/types.js +4 -16
  186. package/lib/modules/Schedule/utils.js +433 -291
  187. package/lib/modules/Step/index.js +40 -52
  188. package/lib/modules/Step/tyeps.js +4 -16
  189. package/lib/modules/Summary/index.js +66 -71
  190. package/lib/modules/Summary/types.js +4 -16
  191. package/lib/modules/Summary/utils.js +773 -418
  192. package/lib/modules/SurchargeList/index.js +46 -60
  193. package/lib/modules/SurchargeList/types.js +4 -16
  194. package/lib/modules/index.js +245 -63
  195. package/lib/plugins/app.js +4 -16
  196. package/lib/plugins/index.js +36 -25
  197. package/lib/plugins/request.js +137 -126
  198. package/lib/plugins/shopStore.js +4 -16
  199. package/lib/plugins/user.js +4 -16
  200. package/lib/plugins/window.js +171 -179
  201. package/lib/server/index.js +3027 -2655
  202. package/lib/server/modules/floor-plan/index.js +102 -123
  203. package/lib/server/modules/floor-plan/types.js +15 -30
  204. package/lib/server/modules/index.js +106 -68
  205. package/lib/server/modules/menu/index.js +146 -122
  206. package/lib/server/modules/menu/types.js +18 -31
  207. package/lib/server/modules/order/index.js +758 -956
  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.js +575 -459
  214. package/lib/server/modules/products/types.js +44 -34
  215. package/lib/server/modules/quotation/index.js +137 -172
  216. package/lib/server/modules/quotation/types.js +21 -31
  217. package/lib/server/modules/resource/index.js +213 -184
  218. package/lib/server/modules/resource/types.js +42 -33
  219. package/lib/server/modules/schedule/index.js +135 -123
  220. package/lib/server/modules/schedule/types.js +14 -21
  221. package/lib/server/modules/schedule/utils.js +334 -163
  222. package/lib/server/types.js +4 -16
  223. package/lib/server/utils/index.js +25 -23
  224. package/lib/server/utils/product.js +196 -139
  225. package/lib/server/utils/schedule.js +34 -41
  226. package/lib/server/utils/small-ticket.js +479 -456
  227. package/lib/server/utils/time.js +40 -49
  228. package/lib/solution/BaseSales/index.js +1274 -1489
  229. package/lib/solution/BaseSales/types.d.ts +2 -0
  230. package/lib/solution/BaseSales/types.js +42 -38
  231. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  232. package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
  233. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  234. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  235. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  236. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +138 -180
  237. package/lib/solution/BaseSales/utils.js +161 -143
  238. package/lib/solution/BookingByStep/index.d.ts +1 -1
  239. package/lib/solution/BookingByStep/index.js +1527 -1340
  240. package/lib/solution/BookingByStep/types.js +40 -99
  241. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  242. package/lib/solution/BookingByStep/utils/products.js +42 -52
  243. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  244. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  245. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  246. package/lib/solution/BookingTicket/index.js +598 -514
  247. package/lib/solution/BookingTicket/types.js +99 -77
  248. package/lib/solution/BookingTicket/utils/addProductDecision.js +229 -190
  249. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  250. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  251. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  252. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  253. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  254. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  255. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  256. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  257. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  258. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  259. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  260. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  261. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  262. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  263. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  264. package/lib/solution/BuyTickets/index.js +67 -70
  265. package/lib/solution/BuyTickets/types.js +22 -38
  266. package/lib/solution/Checkout/index.js +1451 -1158
  267. package/lib/solution/Checkout/types.js +91 -61
  268. package/lib/solution/Checkout/utils/index.js +228 -156
  269. package/lib/solution/PlaceOrder/index.js +55 -0
  270. package/lib/solution/RegisterAndLogin/config.js +493 -460
  271. package/lib/solution/RegisterAndLogin/index.js +633 -630
  272. package/lib/solution/RegisterAndLogin/types.js +189 -76
  273. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  274. package/lib/solution/Sales/index.js +328 -324
  275. package/lib/solution/Sales/types.js +27 -33
  276. package/lib/solution/ScanOrder/index.js +822 -852
  277. package/lib/solution/ScanOrder/types.d.ts +2 -0
  278. package/lib/solution/ScanOrder/types.js +33 -34
  279. package/lib/solution/ScanOrder/utils.js +412 -374
  280. package/lib/solution/ShopDiscount/index.js +226 -232
  281. package/lib/solution/ShopDiscount/types.js +15 -37
  282. package/lib/solution/ShopDiscount/utils.js +300 -172
  283. package/lib/solution/UnifiedBookingSales/index.js +1052 -1213
  284. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  285. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  286. package/lib/solution/VenueBooking/index.js +811 -879
  287. package/lib/solution/VenueBooking/types.js +19 -39
  288. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  289. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  290. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  291. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  292. package/lib/solution/VenueBooking/utils.js +130 -67
  293. package/lib/solution/index.js +124 -41
  294. package/lib/store/createStore.js +32 -29
  295. package/lib/types/index.js +4 -16
  296. package/lib/utils/payment-number.js +26 -46
  297. package/lib/utils/task.js +36 -36
  298. package/lib/utils/watch.js +81 -47
  299. package/package.json +2 -1
@@ -1,106 +1,94 @@
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
  }
30
+ function normalizeProductionCode(value) {
31
+ if (value === undefined || value === null) return '';
32
+ return String(value).trim();
33
+ }
53
34
  function isBlankValue(value) {
54
- return value === void 0 || value === null || typeof value === "string" && value.trim() === "";
35
+ return value === undefined || value === null || typeof value === 'string' && value.trim() === '';
55
36
  }
56
37
  function firstNonBlank(...values) {
57
- return values.find((value) => !isBlankValue(value));
38
+ return values.find(value => !isBlankValue(value));
58
39
  }
40
+
41
+ /**
42
+ * 取第一份接口权威 Data Variant 命中结果并复制数组。
43
+ * 空数组表示规则已计算但无命中,必须与字段缺失区分。
44
+ */
59
45
  function cloneFirstDataVariantIds(...values) {
60
- const ids = values.find((value) => Array.isArray(value));
61
- return Array.isArray(ids) ? [...ids] : void 0;
46
+ const ids = values.find(value => Array.isArray(value));
47
+ return Array.isArray(ids) ? [...ids] : undefined;
62
48
  }
49
+
50
+ /**
51
+ * 在接口权威命中结果后追加本地应用及最终选中的 Data Variant ID。
52
+ * 以字符串身份去重,同时将新增 ID 归一为正整数。
53
+ */
63
54
  function appendDataVariantIds(base, ...values) {
64
55
  const result = Array.isArray(base) ? [...base] : [];
65
- const seen = new Set(result.map((id) => String(id)));
56
+ const seen = new Set(result.map(id => String(id)));
66
57
  for (const value of values) {
67
58
  const candidates = Array.isArray(value) ? value : [value];
68
59
  for (const candidate of candidates) {
69
60
  const id = Number(candidate);
70
- if (!Number.isFinite(id) || id <= 0 || seen.has(String(id)))
71
- continue;
61
+ if (!Number.isFinite(id) || id <= 0 || seen.has(String(id))) continue;
72
62
  result.push(id);
73
63
  seen.add(String(id));
74
64
  }
75
65
  }
76
- return Array.isArray(base) || result.length ? result : void 0;
66
+ return Array.isArray(base) || result.length ? result : undefined;
77
67
  }
78
68
  function normalizeOptionItems(optionItems) {
79
- if (!Array.isArray(optionItems))
80
- return [];
81
- return optionItems.map((optionItem) => {
82
- const optionGroupItemId = toNumber((optionItem == null ? void 0 : optionItem.option_group_item_id) ?? (optionItem == null ? void 0 : optionItem.id));
83
- const price = (optionItem == null ? void 0 : optionItem.price) ?? (optionItem == null ? void 0 : optionItem.add_price) ?? 0;
69
+ if (!Array.isArray(optionItems)) return [];
70
+ return optionItems.map(optionItem => {
71
+ const optionGroupItemId = toNumber(optionItem?.option_group_item_id ?? optionItem?.id);
72
+ const price = optionItem?.price ?? optionItem?.add_price ?? 0;
84
73
  return {
85
74
  ...optionItem,
86
75
  option_group_item_id: optionGroupItemId,
87
- option_group_id: toNumber(optionItem == null ? void 0 : optionItem.option_group_id),
88
- num: toSafePositiveInt((optionItem == null ? void 0 : optionItem.num) ?? (optionItem == null ? void 0 : optionItem.quantity), 1),
76
+ option_group_id: toNumber(optionItem?.option_group_id),
77
+ num: toSafePositiveInt(optionItem?.num ?? optionItem?.quantity, 1),
89
78
  add_price: toNumber(price, 0),
90
- price: void 0
79
+ price: undefined
91
80
  };
92
81
  });
93
82
  }
94
83
  function normalizeBundleItems(bundleItems, preferPriceField = false) {
95
- if (!Array.isArray(bundleItems))
96
- return [];
97
- return bundleItems.map((bundleItem) => {
98
- 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";
99
- const unitStr = toPriceString(unitSelling, "0.00");
100
- const num = toSafePositiveInt((bundleItem == null ? void 0 : bundleItem.num) ?? (bundleItem == null ? void 0 : bundleItem.quantity), 1);
84
+ if (!Array.isArray(bundleItems)) return [];
85
+ return bundleItems.map(bundleItem => {
86
+ 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';
87
+ const unitStr = toPriceString(unitSelling, '0.00');
88
+ const num = toSafePositiveInt(bundleItem?.num ?? bundleItem?.quantity, 1);
101
89
  const magnitudeSource = {
102
90
  ...bundleItem,
103
- option: normalizeOptionItems(bundleItem == null ? void 0 : bundleItem.option),
91
+ option: normalizeOptionItems(bundleItem?.option),
104
92
  bundle_selling_price: unitStr,
105
93
  // 计算 markdown 净额时,只传真实毛价;仅有 bundle_selling_price 时按历史净额兜底。
106
94
  price: bundleItem.price ?? bundleItem.custom_price
@@ -108,16 +96,17 @@ function normalizeBundleItems(bundleItems, preferPriceField = false) {
108
96
  const normalizedItem = {
109
97
  ...bundleItem,
110
98
  num,
111
- quantity: (bundleItem == null ? void 0 : bundleItem.quantity) ?? num,
99
+ quantity: bundleItem?.quantity ?? num,
112
100
  // price 保留毛价(markdown 仍为正),由 price_type 决定符号。
113
101
  price: bundleItem.price ?? unitStr,
114
102
  bundle_selling_price: unitStr,
115
103
  original_price: bundleItem.original_price ?? bundleItem.product_price ?? bundleItem.price ?? unitStr,
116
- option: normalizeOptionItems(bundleItem == null ? void 0 : bundleItem.option),
104
+ option: normalizeOptionItems(bundleItem?.option),
117
105
  discount_list: preferPriceField ? [] : bundleItem.discount_list
118
106
  };
119
- normalizedItem.bundle_selling_price = (0, import_utils.getBundleSellingMagnitude)(magnitudeSource).toFixed(2);
120
- if ((normalizedItem.price_type ?? normalizedItem.custom_price_type) === "markdown" && (normalizedItem.price_type_ext === "" || normalizedItem.price_type_ext === void 0 || normalizedItem.price_type_ext === null)) {
107
+ // bundle_selling_price 落「正净额」:markdown = |price| − Σoptions;markup/原价维持原值。
108
+ normalizedItem.bundle_selling_price = (0, _utils.getBundleSellingMagnitude)(magnitudeSource).toFixed(2);
109
+ if ((normalizedItem.price_type ?? normalizedItem.custom_price_type) === 'markdown' && (normalizedItem.price_type_ext === '' || normalizedItem.price_type_ext === undefined || normalizedItem.price_type_ext === null)) {
121
110
  normalizedItem.custom_price = normalizedItem.custom_price ?? normalizedItem.price;
122
111
  normalizedItem.price = normalizedItem.bundle_selling_price;
123
112
  }
@@ -125,117 +114,88 @@ function normalizeBundleItems(bundleItems, preferPriceField = false) {
125
114
  });
126
115
  }
127
116
  function findVariantById(origin, variantId) {
128
- if (!origin || !variantId || variantId <= 0)
129
- return null;
130
- const variants = Array.isArray(origin == null ? void 0 : origin.variant) ? origin.variant : [];
131
- return variants.find((variant) => Number(variant == null ? void 0 : variant.id) === variantId) || null;
117
+ if (!origin || !variantId || variantId <= 0) return null;
118
+ const variants = Array.isArray(origin?.variant) ? origin.variant : [];
119
+ return variants.find(variant => Number(variant?.id) === variantId) || null;
132
120
  }
121
+
122
+ /**
123
+ * 将商品列表原始数据 + 商品详情选择回调转换成 OrderModule.addProductToOrder 入参。
124
+ *
125
+ * 注意:这里不生成 identity,缺省时由 OrderModule 自动补齐。
126
+ */
133
127
  function transformBaseProductToOrderProduct(params) {
134
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C;
135
- const { payload, fallbackProductId = null } = params;
136
- if (!payload || typeof payload !== "object")
137
- return null;
128
+ const {
129
+ payload,
130
+ fallbackProductId = null
131
+ } = params;
132
+ if (!payload || typeof payload !== 'object') return null;
138
133
  const sourceProduct = params.sourceProduct || params.sourceItem || {};
139
- const productId = toProductId(
140
- payload.product_id ?? payload.id ?? (sourceProduct == null ? void 0 : sourceProduct.product_id) ?? (sourceProduct == null ? void 0 : sourceProduct.id) ?? fallbackProductId
141
- );
142
- if (productId === null)
143
- return null;
144
- const productVariantId = toNumber(
145
- payload.product_variant_id ?? payload.variant_id ?? (sourceProduct == null ? void 0 : sourceProduct.product_variant_id) ?? (sourceProduct == null ? void 0 : sourceProduct.variant_id),
146
- 0
147
- );
148
- const callbackOrigin = payload.origin || ((_a = payload._origin) == null ? void 0 : _a.sourceProduct) || ((_b = payload._origin) == null ? void 0 : _b.sourceItem) || payload._origin || {};
134
+ const productId = toProductId(payload.product_id ?? payload.id ?? sourceProduct?.product_id ?? sourceProduct?.id ?? fallbackProductId);
135
+ if (productId === null) return null;
136
+ const productVariantId = toNumber(payload.product_variant_id ?? payload.variant_id ?? sourceProduct?.product_variant_id ?? sourceProduct?.variant_id, 0);
137
+ const callbackOrigin = payload.origin || payload._origin?.sourceProduct || payload._origin?.sourceItem || payload._origin || {};
149
138
  const origin = {
150
- ...sourceProduct || {},
151
- ...callbackOrigin || {}
139
+ ...(sourceProduct || {}),
140
+ ...(callbackOrigin || {})
152
141
  };
153
- const authoritativeDataVariantIds = cloneFirstDataVariantIds(
154
- (_c = payload.metadata) == null ? void 0 : _c.data_variant_ids,
155
- (_d = sourceProduct == null ? void 0 : sourceProduct.metadata) == null ? void 0 : _d.data_variant_ids,
156
- (_e = callbackOrigin == null ? void 0 : callbackOrigin.metadata) == null ? void 0 : _e.data_variant_ids,
157
- (_f = origin == null ? void 0 : origin.metadata) == null ? void 0 : _f.data_variant_ids
158
- );
159
- const selectedSettlementSnapshot = firstNonBlank(
160
- payload.selected_settlement_snapshot,
161
- (_g = payload.metadata) == null ? void 0 : _g.selected_settlement_snapshot,
162
- (_i = (_h = payload._extend) == null ? void 0 : _h.metadata) == null ? void 0 : _i.selected_settlement_snapshot,
163
- (_j = sourceProduct == null ? void 0 : sourceProduct.metadata) == null ? void 0 : _j.selected_settlement_snapshot,
164
- (_l = (_k = sourceProduct == null ? void 0 : sourceProduct._extend) == null ? void 0 : _k.metadata) == null ? void 0 : _l.selected_settlement_snapshot,
165
- (_m = callbackOrigin == null ? void 0 : callbackOrigin.metadata) == null ? void 0 : _m.selected_settlement_snapshot,
166
- (_o = (_n = callbackOrigin == null ? void 0 : callbackOrigin._extend) == null ? void 0 : _n.metadata) == null ? void 0 : _o.selected_settlement_snapshot
167
- );
168
- const locallyAppliedVariantIds = authoritativeDataVariantIds === void 0 ? cloneFirstDataVariantIds(
169
- (_p = payload._dataVariant) == null ? void 0 : _p.appliedVariantIds,
170
- (_q = sourceProduct == null ? void 0 : sourceProduct._dataVariant) == null ? void 0 : _q.appliedVariantIds,
171
- (_r = callbackOrigin == null ? void 0 : callbackOrigin._dataVariant) == null ? void 0 : _r.appliedVariantIds,
172
- (_s = origin == null ? void 0 : origin._dataVariant) == null ? void 0 : _s.appliedVariantIds
173
- ) : void 0;
174
- const dataVariantIds = appendDataVariantIds(
175
- authoritativeDataVariantIds,
176
- locallyAppliedVariantIds,
177
- selectedSettlementSnapshot == null ? void 0 : selectedSettlementSnapshot.data_variant_id
178
- );
142
+ const authoritativeDataVariantIds = cloneFirstDataVariantIds(payload.metadata?.data_variant_ids, sourceProduct?.metadata?.data_variant_ids, callbackOrigin?.metadata?.data_variant_ids, origin?.metadata?.data_variant_ids);
143
+ const selectedSettlementSnapshot = firstNonBlank(payload.selected_settlement_snapshot, payload.metadata?.selected_settlement_snapshot, payload._extend?.metadata?.selected_settlement_snapshot, sourceProduct?.metadata?.selected_settlement_snapshot, sourceProduct?._extend?.metadata?.selected_settlement_snapshot, callbackOrigin?.metadata?.selected_settlement_snapshot, callbackOrigin?._extend?.metadata?.selected_settlement_snapshot);
144
+ const locallyAppliedVariantIds = authoritativeDataVariantIds === undefined ? cloneFirstDataVariantIds(payload._dataVariant?.appliedVariantIds, sourceProduct?._dataVariant?.appliedVariantIds, callbackOrigin?._dataVariant?.appliedVariantIds, origin?._dataVariant?.appliedVariantIds) : undefined;
145
+ const dataVariantIds = appendDataVariantIds(authoritativeDataVariantIds, locallyAppliedVariantIds, selectedSettlementSnapshot?.data_variant_id);
179
146
  const matchedVariant = findVariantById(callbackOrigin, productVariantId) ?? findVariantById(sourceProduct, productVariantId) ?? findVariantById(origin, productVariantId);
180
- const hasPriceOverride = payload.price_override !== void 0 && payload.price_override !== null && payload.price_override !== "";
181
- 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);
182
- const sourceProductPrice = toPriceString(
183
- hasPriceOverride ? catalogSourcePrice ?? payload.price ?? payload.selling_price : payload.price ?? payload.selling_price ?? catalogSourcePrice,
184
- "0.00"
185
- );
186
- const explicitLineTotal = payload.line_total ?? payload.total ?? ((_t = payload._extend) == null ? void 0 : _t.total);
147
+ const productionCode = normalizeProductionCode(Object.prototype.hasOwnProperty.call(payload, 'production_code') ? payload.production_code : productVariantId > 0 ? matchedVariant?.production_code : origin?.production_code ?? sourceProduct?.production_code);
148
+ const hasPriceOverride = payload.price_override !== undefined && payload.price_override !== null && payload.price_override !== '';
149
+ // 手动改价后 payload.price 是分摊后的主商品售价,不能再作为券前 source。
150
+ // 此时优先从商品/variant 快照读取目录价;售价仍由 line_total - bundle 推导。
151
+ const catalogSourcePrice = matchedVariant?.price ?? matchedVariant?.base_price ?? origin?.price ?? origin?.base_price ?? sourceProduct?.price ?? sourceProduct?.selling_price ?? sourceProduct?.base_price;
152
+ const sourceProductPrice = toPriceString(hasPriceOverride ? catalogSourcePrice ?? payload.price ?? payload.selling_price : payload.price ?? payload.selling_price ?? catalogSourcePrice, '0.00');
153
+ const explicitLineTotal = payload.line_total ?? payload.total ?? payload._extend?.total;
187
154
  const hasExplicitLineTotal = Number.isFinite(Number(explicitLineTotal));
188
155
  const lineCompositeTotal = toPriceString(explicitLineTotal, sourceProductPrice);
189
- const productOptionItem = (0, import_utils.normalizeProductSkuOptions)(
190
- normalizeOptionItems(
191
- ((_u = payload.product_sku) == null ? void 0 : _u.option) ?? payload.option ?? payload.options ?? payload.product_option_item
192
- )
193
- );
194
- const productBundle = normalizeBundleItems(
195
- payload.bundle ?? payload.product_bundle,
196
- hasPriceOverride
197
- );
156
+ const productOptionItem = (0, _utils.normalizeProductSkuOptions)(normalizeOptionItems(payload.product_sku?.option ?? payload.option ?? payload.options ?? payload.product_option_item));
157
+ const productBundle = normalizeBundleItems(payload.bundle ?? payload.product_bundle, hasPriceOverride);
158
+ // `payload.unique` 是业务侧商品/票务标识,可能在连续加同一商品时重复;
159
+ // 行级唯一值只接受显式协议字段,缺省交给 OrderModule 生成。
198
160
  const uniqueIdentificationNumber = payload.unique_identification_number;
199
161
  const resolvedQuantity = toSafePositiveInt(payload.quantity ?? payload.num, 1);
200
- const originTotal = (0, import_manualProductDiscount.resolveManualDiscountOriginTotal)({
162
+ const originTotal = (0, _manualProductDiscount.resolveManualDiscountOriginTotal)({
201
163
  originTotal: payload.origin_total,
202
- extendOriginTotal: (_v = payload._extend) == null ? void 0 : _v.origin_total,
203
- originExtendOriginTotal: (_w = origin == null ? void 0 : origin._extend) == null ? void 0 : _w.origin_total,
204
- sourceExtendOriginTotal: (_x = sourceProduct == null ? void 0 : sourceProduct._extend) == null ? void 0 : _x.origin_total,
205
- 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),
164
+ extendOriginTotal: payload._extend?.origin_total,
165
+ originExtendOriginTotal: origin?._extend?.origin_total,
166
+ sourceExtendOriginTotal: sourceProduct?._extend?.origin_total,
167
+ catalogUnitPrice: origin?.base_price ?? origin?.price ?? sourceProduct?.base_price ?? sourceProduct?.price,
206
168
  quantity: resolvedQuantity
207
169
  });
208
- const sellingTotal = Number(
209
- payload.line_total ?? payload.total ?? ((_y = payload._extend) == null ? void 0 : _y.total) ?? lineCompositeTotal
210
- );
211
- const discountReason = (0, import_manualProductDiscount.resolveManualDiscountReasonFromSources)({
170
+ const sellingTotal = Number(payload.line_total ?? payload.total ?? payload._extend?.total ?? lineCompositeTotal);
171
+ const discountReason = (0, _manualProductDiscount.resolveManualDiscountReasonFromSources)({
212
172
  discountReason: payload.discount_reason,
213
- extendDiscountReason: (_z = payload._extend) == null ? void 0 : _z.discount_reason,
214
- originExtendDiscountReason: (_A = origin == null ? void 0 : origin._extend) == null ? void 0 : _A.discount_reason
173
+ extendDiscountReason: payload._extend?.discount_reason,
174
+ originExtendDiscountReason: origin?._extend?.discount_reason
215
175
  });
216
176
  const lineOriginalPrice = hasPriceOverride && Number.isFinite(originTotal) ? toPriceString(originTotal) : lineCompositeTotal;
217
- const manualDiscountList = (0, import_manualProductDiscount.shouldBuildManualProductDiscount)({
177
+ const manualDiscountList = (0, _manualProductDiscount.shouldBuildManualProductDiscount)({
218
178
  hasPriceOverride,
219
179
  originTotal,
220
180
  sellingTotal
221
- }) ? (0, import_manualProductDiscount.mergeManualProductDiscountIntoList)(
222
- payload.discount_list,
223
- (0, import_manualProductDiscount.buildManualProductDiscountItem)({
224
- originTotal: Number.isFinite(originTotal) ? originTotal : Number(lineOriginalPrice),
225
- sellingTotal: Number.isFinite(sellingTotal) ? sellingTotal : Number(lineCompositeTotal),
226
- quantity: resolvedQuantity,
227
- message: discountReason,
228
- discountway: (_B = payload._extend) == null ? void 0 : _B.discountway,
229
- discount_per: (_C = payload._extend) == null ? void 0 : _C.discount_per
230
- })
231
- ) : payload.discount_list || [];
232
- const optionSum = (0, import_utils.sumOptionUnitPrice)(productOptionItem).toNumber();
181
+ }) ? (0, _manualProductDiscount.mergeManualProductDiscountIntoList)(payload.discount_list, (0, _manualProductDiscount.buildManualProductDiscountItem)({
182
+ originTotal: Number.isFinite(originTotal) ? originTotal : Number(lineOriginalPrice),
183
+ sellingTotal: Number.isFinite(sellingTotal) ? sellingTotal : Number(lineCompositeTotal),
184
+ quantity: resolvedQuantity,
185
+ message: discountReason,
186
+ discountway: payload._extend?.discountway,
187
+ discount_per: payload._extend?.discount_per
188
+ })) : payload.discount_list || [];
189
+
190
+ // v2:source 不含 option;main_product_* 含 option(与 normalizeOrderProduct 一致)
191
+ const optionSum = (0, _utils.sumOptionUnitPrice)(productOptionItem).toNumber();
233
192
  const mainProductOriginalPrice = toPriceString(Number(sourceProductPrice) + optionSum);
234
- const bundleOnlyComposite = (0, import_utils.composeLinePrice)({ mainPrice: 0, bundle: productBundle });
193
+ const bundleOnlyComposite = (0, _utils.composeLinePrice)({
194
+ mainPrice: 0,
195
+ bundle: productBundle
196
+ });
235
197
  const derivedMainSelling = hasExplicitLineTotal ? Number(lineCompositeTotal) - Number(bundleOnlyComposite) : Number(mainProductOriginalPrice);
236
- const mainProductSellingPrice = toPriceString(
237
- Number.isFinite(derivedMainSelling) && derivedMainSelling >= 0 ? derivedMainSelling : Number(mainProductOriginalPrice)
238
- );
198
+ const mainProductSellingPrice = toPriceString(Number.isFinite(derivedMainSelling) && derivedMainSelling >= 0 ? derivedMainSelling : Number(mainProductOriginalPrice));
239
199
  const metadata = {
240
200
  unique: payload.unique,
241
201
  session: payload.session,
@@ -250,58 +210,56 @@ function transformBaseProductToOrderProduct(params) {
250
210
  main_product_selling_price: mainProductSellingPrice,
251
211
  main_product_original_price: mainProductOriginalPrice,
252
212
  price_schema_version: 2,
253
- holder_config: sourceProduct == null ? void 0 : sourceProduct.holder_config,
254
- ...dataVariantIds !== void 0 ? { data_variant_ids: dataVariantIds } : {},
255
- ...selectedSettlementSnapshot ? {
213
+ holder_config: sourceProduct?.holder_config,
214
+ ...(dataVariantIds !== undefined ? {
215
+ data_variant_ids: dataVariantIds
216
+ } : {}),
217
+ ...(selectedSettlementSnapshot ? {
256
218
  selected_settlement_snapshot: selectedSettlementSnapshot
257
- } : {},
258
- ...hasPriceOverride ? {
219
+ } : {}),
220
+ ...(hasPriceOverride ? {
259
221
  price_override: String(payload.price_override),
260
222
  is_manual_discount: 1
261
- } : {},
262
- ...payload.bundle_edit !== void 0 ? { bundle_edit: payload.bundle_edit } : {}
223
+ } : {}),
224
+ ...(payload.bundle_edit !== undefined ? {
225
+ bundle_edit: payload.bundle_edit
226
+ } : {})
263
227
  };
264
228
  if (uniqueIdentificationNumber) {
265
229
  metadata.unique_identification_number = String(uniqueIdentificationNumber);
266
230
  }
231
+ // 从源头补充商品多语言标题
267
232
  const productTitle = {
268
- ...(sourceProduct == null ? void 0 : sourceProduct.title_i18n) || {},
269
- original: (sourceProduct == null ? void 0 : sourceProduct.original_title) || (sourceProduct == null ? void 0 : sourceProduct.title) || ""
233
+ ...(sourceProduct?.title_i18n || {}),
234
+ original: sourceProduct?.original_title || sourceProduct?.title || ''
270
235
  };
271
236
  return {
272
237
  product_id: productId,
273
238
  product_variant_id: productVariantId,
274
- unique_identification_number: uniqueIdentificationNumber ? String(uniqueIdentificationNumber) : void 0,
239
+ production_code: productionCode,
240
+ unique_identification_number: uniqueIdentificationNumber ? String(uniqueIdentificationNumber) : undefined,
275
241
  num: resolvedQuantity,
276
242
  product_sku: {
277
- ...payload.product_sku && typeof payload.product_sku === "object" ? payload.product_sku : {},
243
+ ...(payload.product_sku && typeof payload.product_sku === 'object' ? payload.product_sku : {}),
278
244
  option: productOptionItem
279
245
  },
280
246
  product_bundle: productBundle,
281
247
  discount_list: manualDiscountList,
282
- ...payload.bundle_edit !== void 0 ? { bundle_edit: payload.bundle_edit } : {},
248
+ ...(payload.bundle_edit !== undefined ? {
249
+ bundle_edit: payload.bundle_edit
250
+ } : {}),
283
251
  // 折后行价由 normalizeOrderProduct 按 main + bundle 合成;手动改价时 bundle 已为分摊后单价
284
252
  selling_price: lineCompositeTotal,
285
253
  original_price: lineOriginalPrice,
286
- tax_fee: toPriceString(
287
- payload.tax_fee ?? (matchedVariant == null ? void 0 : matchedVariant.tax_fee) ?? (origin == null ? void 0 : origin.tax_fee) ?? (sourceProduct == null ? void 0 : sourceProduct.tax_fee),
288
- "0.00"
289
- ),
290
- is_charge_tax: toNumber(
291
- 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),
292
- 0
293
- ),
254
+ tax_fee: toPriceString(payload.tax_fee ?? matchedVariant?.tax_fee ?? origin?.tax_fee ?? sourceProduct?.tax_fee, '0.00'),
255
+ is_charge_tax: toNumber(payload.is_charge_tax ?? matchedVariant?.is_charge_tax ?? origin?.is_charge_tax ?? sourceProduct?.is_charge_tax, 0),
294
256
  metadata,
295
- note: payload.note != null ? String(payload.note) : "",
257
+ note: payload.note != null ? String(payload.note) : '',
296
258
  product_title: productTitle,
297
- product_cover: firstNonBlank(matchedVariant == null ? void 0 : matchedVariant.cover, sourceProduct == null ? void 0 : sourceProduct.cover),
259
+ product_cover: firstNonBlank(matchedVariant?.cover, sourceProduct?.cover),
298
260
  _origin: {
299
- ...sourceProduct || {},
261
+ ...(sourceProduct || {}),
300
262
  callbackData: payload
301
263
  }
302
264
  };
303
- }
304
- // Annotate the CommonJS export names for ESM import in node:
305
- 0 && (module.exports = {
306
- transformBaseProductToOrderProduct
307
- });
265
+ }