@pisell/pisellos 0.10.14 → 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 (301) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  3. package/dist/model/strategy/strategy-example.js +5 -19
  4. package/dist/modules/Cart/index.js +0 -3
  5. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  6. package/dist/modules/Date/index.js +1 -5
  7. package/dist/modules/Discount/index.js +2 -4
  8. package/dist/modules/OpenData/index.js +0 -2
  9. package/dist/modules/Order/index.d.ts +1 -1
  10. package/dist/modules/Order/index.js +75 -91
  11. package/dist/modules/Order/types.d.ts +5 -1
  12. package/dist/modules/Order/utils/virtualSettlement.d.ts +8 -1
  13. package/dist/modules/Order/utils/virtualSettlement.js +15 -2
  14. package/dist/modules/Order/utils.js +7 -1
  15. package/dist/modules/Payment/index.js +97 -162
  16. package/dist/modules/Product/types.d.ts +2 -0
  17. package/dist/modules/Rules/index.js +1 -4
  18. package/dist/modules/Schedule/index.js +0 -1
  19. package/dist/modules/Schedule/utils.js +0 -1
  20. package/dist/modules/Step/index.js +0 -1
  21. package/dist/plugins/request.js +1 -4
  22. package/dist/plugins/window.js +2 -6
  23. package/dist/server/index.js +97 -129
  24. package/dist/server/modules/menu/index.js +32 -41
  25. package/dist/server/modules/order/index.js +2 -4
  26. package/dist/server/modules/products/index.js +24 -42
  27. package/dist/server/modules/quotation/index.js +29 -38
  28. package/dist/server/modules/resource/index.js +3 -4
  29. package/dist/server/modules/schedule/index.js +27 -35
  30. package/dist/server/utils/product.js +0 -1
  31. package/dist/solution/BaseSales/index.js +107 -76
  32. package/dist/solution/BaseSales/types.d.ts +2 -0
  33. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  34. package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
  35. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  36. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +7 -1
  37. package/dist/solution/BaseSales/utils.js +6 -3
  38. package/dist/solution/BookingByStep/index.d.ts +2 -2
  39. package/dist/solution/BookingByStep/index.js +7 -59
  40. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  41. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  42. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  43. package/dist/solution/BookingTicket/index.js +8 -4
  44. package/dist/solution/BookingTicket/utils/addProductDecision.js +3 -1
  45. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  46. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  47. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  48. package/dist/solution/BuyTickets/index.js +9 -12
  49. package/dist/solution/Checkout/index.js +177 -252
  50. package/dist/solution/Checkout/utils/index.js +4 -16
  51. package/dist/solution/RegisterAndLogin/index.js +30 -76
  52. package/dist/solution/ScanOrder/index.js +50 -60
  53. package/dist/solution/ScanOrder/types.d.ts +2 -0
  54. package/dist/solution/ScanOrder/utils.js +6 -3
  55. package/dist/solution/ShopDiscount/index.js +2 -7
  56. package/dist/solution/VenueBooking/index.js +45 -55
  57. package/dist/utils/task.js +15 -18
  58. package/dist/utils/watch.js +0 -1
  59. package/lib/apis/picoding.js +2 -0
  60. package/lib/core/index.js +131 -131
  61. package/lib/effects/index.js +46 -57
  62. package/lib/index.js +82 -49
  63. package/lib/model/index.js +14 -21
  64. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  65. package/lib/model/strategy/adapter/dataVariant/evaluator.js +209 -315
  66. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  67. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  68. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  69. package/lib/model/strategy/adapter/index.js +100 -64
  70. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  71. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  72. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  73. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  74. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  75. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  76. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  77. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  78. package/lib/model/strategy/adapter/promotion/index.js +43 -48
  79. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  80. package/lib/model/strategy/adapter/type.js +4 -16
  81. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  82. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  83. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  84. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  85. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  86. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  87. package/lib/model/strategy/engine.js +270 -168
  88. package/lib/model/strategy/index.js +49 -34
  89. package/lib/model/strategy/strategy-example.js +243 -239
  90. package/lib/model/strategy/type.js +100 -40
  91. package/lib/modules/Account/index.js +39 -53
  92. package/lib/modules/Account/types.js +20 -33
  93. package/lib/modules/AccountList/index.js +116 -154
  94. package/lib/modules/AccountList/types.js +30 -31
  95. package/lib/modules/AccountList/utils.js +18 -30
  96. package/lib/modules/BaseModule.js +23 -42
  97. package/lib/modules/BookingContext/index.js +158 -136
  98. package/lib/modules/BookingContext/types.js +46 -32
  99. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  100. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  101. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  102. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  103. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  104. package/lib/modules/BookingContext/utils/index.js +124 -41
  105. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  106. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  107. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  108. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  109. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  110. package/lib/modules/BookingContext/utils/resources.js +209 -167
  111. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  112. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  113. package/lib/modules/Cart/index.js +170 -124
  114. package/lib/modules/Cart/types.js +46 -51
  115. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  116. package/lib/modules/Cart/utils/cartDate.js +56 -61
  117. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  118. package/lib/modules/Cart/utils/cartNote.js +27 -32
  119. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  120. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  121. package/lib/modules/Cart/utils/cartResource.js +70 -78
  122. package/lib/modules/Cart/utils/changePrice.js +22 -50
  123. package/lib/modules/Cart/utils/index.js +106 -48
  124. package/lib/modules/Customer/constants.js +13 -34
  125. package/lib/modules/Customer/index.js +235 -172
  126. package/lib/modules/Customer/types.js +38 -35
  127. package/lib/modules/Date/index.js +116 -115
  128. package/lib/modules/Date/types.js +16 -28
  129. package/lib/modules/Date/utils.js +174 -123
  130. package/lib/modules/Discount/index.js +133 -143
  131. package/lib/modules/Discount/types.js +9 -31
  132. package/lib/modules/Guests/index.js +30 -56
  133. package/lib/modules/Guests/types.js +23 -33
  134. package/lib/modules/Holder/index.js +209 -189
  135. package/lib/modules/Holder/types.js +4 -16
  136. package/lib/modules/Holder/utils.js +20 -49
  137. package/lib/modules/OpenData/index.js +70 -76
  138. package/lib/modules/OpenData/types.js +4 -16
  139. package/lib/modules/OpenData/utils.js +44 -78
  140. package/lib/modules/Order/index.d.ts +1 -1
  141. package/lib/modules/Order/index.js +1810 -2238
  142. package/lib/modules/Order/payment-utils.js +77 -120
  143. package/lib/modules/Order/types.d.ts +5 -1
  144. package/lib/modules/Order/types.js +87 -35
  145. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  146. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  147. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  148. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  149. package/lib/modules/Order/utils/virtualSettlement.d.ts +8 -1
  150. package/lib/modules/Order/utils/virtualSettlement.js +126 -164
  151. package/lib/modules/Order/utils.js +834 -668
  152. package/lib/modules/Payment/cash.js +20 -33
  153. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  154. package/lib/modules/Payment/eftpos.js +16 -30
  155. package/lib/modules/Payment/index.js +532 -399
  156. package/lib/modules/Payment/mx51.js +1 -0
  157. package/lib/modules/Payment/types.js +230 -108
  158. package/lib/modules/Payment/utils.js +52 -51
  159. package/lib/modules/Payment/walletpass.js +485 -660
  160. package/lib/modules/Product/index.js +51 -46
  161. package/lib/modules/Product/types.d.ts +2 -0
  162. package/lib/modules/Product/types.js +4 -16
  163. package/lib/modules/Product/utils.js +32 -33
  164. package/lib/modules/ProductList/index.js +138 -161
  165. package/lib/modules/ProductList/types.js +9 -31
  166. package/lib/modules/Quotation/index.js +66 -100
  167. package/lib/modules/Quotation/types.js +4 -16
  168. package/lib/modules/Resource/index.js +27 -59
  169. package/lib/modules/Resource/types.js +22 -32
  170. package/lib/modules/Resource/utils.js +30 -38
  171. package/lib/modules/ResourcePlanner/index.js +25 -23
  172. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  173. package/lib/modules/ResourcePlanner/planner.js +591 -772
  174. package/lib/modules/ResourcePlanner/types.js +10 -29
  175. package/lib/modules/Rules/index.js +1218 -959
  176. package/lib/modules/Rules/types.js +17 -40
  177. package/lib/modules/SalesSummary/index.js +78 -89
  178. package/lib/modules/SalesSummary/types.js +4 -16
  179. package/lib/modules/SalesSummary/utils.js +359 -442
  180. package/lib/modules/ScanOrderLogger/index.js +59 -79
  181. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  182. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  183. package/lib/modules/ScanOrderLogger/types.js +4 -16
  184. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  185. package/lib/modules/Schedule/index.js +100 -114
  186. package/lib/modules/Schedule/type.js +4 -16
  187. package/lib/modules/Schedule/types.js +4 -16
  188. package/lib/modules/Schedule/utils.js +433 -291
  189. package/lib/modules/Step/index.js +40 -52
  190. package/lib/modules/Step/tyeps.js +4 -16
  191. package/lib/modules/Summary/index.js +66 -71
  192. package/lib/modules/Summary/types.js +4 -16
  193. package/lib/modules/Summary/utils.js +773 -418
  194. package/lib/modules/SurchargeList/index.js +46 -60
  195. package/lib/modules/SurchargeList/types.js +4 -16
  196. package/lib/modules/index.js +245 -63
  197. package/lib/plugins/app.js +4 -16
  198. package/lib/plugins/index.js +36 -25
  199. package/lib/plugins/request.js +137 -126
  200. package/lib/plugins/shopStore.js +4 -16
  201. package/lib/plugins/user.js +4 -16
  202. package/lib/plugins/window.js +171 -179
  203. package/lib/server/index.js +3027 -2655
  204. package/lib/server/modules/floor-plan/index.js +102 -123
  205. package/lib/server/modules/floor-plan/types.js +15 -30
  206. package/lib/server/modules/index.js +106 -68
  207. package/lib/server/modules/menu/index.js +146 -122
  208. package/lib/server/modules/menu/types.js +18 -31
  209. package/lib/server/modules/order/index.js +758 -956
  210. package/lib/server/modules/order/types.js +122 -33
  211. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  212. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  213. package/lib/server/modules/payment/index.js +59 -83
  214. package/lib/server/modules/payment/types.js +4 -16
  215. package/lib/server/modules/products/index.js +575 -459
  216. package/lib/server/modules/products/types.js +44 -34
  217. package/lib/server/modules/quotation/index.js +137 -172
  218. package/lib/server/modules/quotation/types.js +21 -31
  219. package/lib/server/modules/resource/index.js +213 -184
  220. package/lib/server/modules/resource/types.js +42 -33
  221. package/lib/server/modules/schedule/index.js +135 -123
  222. package/lib/server/modules/schedule/types.js +14 -21
  223. package/lib/server/modules/schedule/utils.js +334 -163
  224. package/lib/server/types.js +4 -16
  225. package/lib/server/utils/index.js +25 -23
  226. package/lib/server/utils/product.js +196 -139
  227. package/lib/server/utils/schedule.js +34 -41
  228. package/lib/server/utils/small-ticket.js +479 -456
  229. package/lib/server/utils/time.js +40 -49
  230. package/lib/solution/BaseSales/index.js +1276 -1485
  231. package/lib/solution/BaseSales/types.d.ts +2 -0
  232. package/lib/solution/BaseSales/types.js +42 -38
  233. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  234. package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
  235. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  236. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  237. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  238. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +138 -180
  239. package/lib/solution/BaseSales/utils.js +161 -143
  240. package/lib/solution/BookingByStep/index.d.ts +2 -2
  241. package/lib/solution/BookingByStep/index.js +1527 -1340
  242. package/lib/solution/BookingByStep/types.js +40 -99
  243. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  244. package/lib/solution/BookingByStep/utils/products.js +42 -52
  245. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  246. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  247. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  248. package/lib/solution/BookingTicket/index.js +598 -514
  249. package/lib/solution/BookingTicket/types.js +99 -77
  250. package/lib/solution/BookingTicket/utils/addProductDecision.js +229 -190
  251. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  252. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  253. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  254. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  255. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  256. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  257. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  258. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  259. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  260. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  261. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  262. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  263. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  264. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  265. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  266. package/lib/solution/BuyTickets/index.js +67 -70
  267. package/lib/solution/BuyTickets/types.js +22 -38
  268. package/lib/solution/Checkout/index.js +1451 -1158
  269. package/lib/solution/Checkout/types.js +91 -61
  270. package/lib/solution/Checkout/utils/index.js +228 -156
  271. package/lib/solution/PlaceOrder/index.js +55 -0
  272. package/lib/solution/RegisterAndLogin/config.js +493 -460
  273. package/lib/solution/RegisterAndLogin/index.js +633 -630
  274. package/lib/solution/RegisterAndLogin/types.js +189 -76
  275. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  276. package/lib/solution/Sales/index.js +328 -324
  277. package/lib/solution/Sales/types.js +27 -33
  278. package/lib/solution/ScanOrder/index.js +822 -852
  279. package/lib/solution/ScanOrder/types.d.ts +2 -0
  280. package/lib/solution/ScanOrder/types.js +33 -34
  281. package/lib/solution/ScanOrder/utils.js +412 -374
  282. package/lib/solution/ShopDiscount/index.js +226 -232
  283. package/lib/solution/ShopDiscount/types.js +15 -37
  284. package/lib/solution/ShopDiscount/utils.js +300 -172
  285. package/lib/solution/UnifiedBookingSales/index.js +1052 -1213
  286. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  287. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  288. package/lib/solution/VenueBooking/index.js +811 -879
  289. package/lib/solution/VenueBooking/types.js +19 -39
  290. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  291. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  292. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  293. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  294. package/lib/solution/VenueBooking/utils.js +130 -67
  295. package/lib/solution/index.js +124 -41
  296. package/lib/store/createStore.js +32 -29
  297. package/lib/types/index.js +4 -16
  298. package/lib/utils/payment-number.js +26 -46
  299. package/lib/utils/task.js +36 -36
  300. package/lib/utils/watch.js +81 -47
  301. 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
+ }