@pisell/pisellos 2.1.119 → 2.1.121

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 (231) hide show
  1. package/dist/apis/picoding.d.ts +0 -0
  2. package/dist/apis/picoding.js +1 -0
  3. package/dist/model/index.d.ts +1 -0
  4. package/dist/model/index.js +1 -0
  5. package/dist/model/strategy/adapter/index.d.ts +7 -0
  6. package/dist/model/strategy/adapter/index.js +7 -0
  7. package/dist/model/strategy/adapter/itemRule/adapter.d.ts +59 -0
  8. package/dist/model/strategy/adapter/itemRule/adapter.js +439 -0
  9. package/dist/model/strategy/adapter/itemRule/evaluator.d.ts +43 -0
  10. package/dist/model/strategy/adapter/itemRule/evaluator.js +169 -0
  11. package/dist/model/strategy/adapter/itemRule/examples.d.ts +64 -0
  12. package/dist/model/strategy/adapter/itemRule/examples.js +315 -0
  13. package/dist/model/strategy/adapter/itemRule/index.d.ts +5 -0
  14. package/dist/model/strategy/adapter/itemRule/index.js +5 -0
  15. package/dist/model/strategy/adapter/itemRule/type.d.ts +206 -0
  16. package/dist/model/strategy/adapter/itemRule/type.js +101 -0
  17. package/dist/model/strategy/adapter/promotion/adapter.d.ts +66 -0
  18. package/dist/model/strategy/adapter/promotion/adapter.js +271 -0
  19. package/dist/model/strategy/adapter/promotion/evaluator.d.ts +213 -0
  20. package/dist/model/strategy/adapter/promotion/evaluator.js +1206 -0
  21. package/dist/model/strategy/adapter/promotion/examples.d.ts +138 -0
  22. package/dist/model/strategy/adapter/promotion/examples.js +166 -0
  23. package/dist/model/strategy/adapter/promotion/index.d.ts +4 -0
  24. package/dist/model/strategy/adapter/promotion/index.js +0 -0
  25. package/dist/model/strategy/adapter/promotion/type.d.ts +447 -0
  26. package/dist/model/strategy/adapter/promotion/type.js +209 -0
  27. package/dist/model/strategy/adapter/type.d.ts +28 -0
  28. package/dist/model/strategy/adapter/type.js +1 -0
  29. package/dist/model/strategy/adapter/walletPass/evaluator.d.ts +84 -0
  30. package/dist/model/strategy/adapter/walletPass/evaluator.js +502 -0
  31. package/dist/model/strategy/adapter/walletPass/example.d.ts +4 -0
  32. package/dist/model/strategy/adapter/walletPass/example.js +258 -0
  33. package/dist/model/strategy/adapter/walletPass/index.d.ts +32 -0
  34. package/dist/model/strategy/adapter/walletPass/index.js +182 -0
  35. package/dist/model/strategy/adapter/walletPass/locales.d.ts +1 -0
  36. package/dist/model/strategy/adapter/walletPass/locales.js +26 -0
  37. package/dist/model/strategy/adapter/walletPass/type.d.ts +187 -0
  38. package/dist/model/strategy/adapter/walletPass/type.js +1 -0
  39. package/dist/model/strategy/adapter/walletPass/utils.d.ts +50 -0
  40. package/dist/model/strategy/adapter/walletPass/utils.js +1104 -0
  41. package/dist/model/strategy/engine.d.ts +106 -0
  42. package/dist/model/strategy/engine.js +611 -0
  43. package/dist/model/strategy/index.d.ts +3 -0
  44. package/dist/model/strategy/index.js +8 -0
  45. package/dist/model/strategy/strategy-example.d.ts +5 -0
  46. package/dist/model/strategy/strategy-example.js +331 -0
  47. package/dist/model/strategy/type.d.ts +228 -0
  48. package/dist/model/strategy/type.js +94 -0
  49. package/dist/modules/Cart/utils/cartProduct.js +1 -0
  50. package/dist/modules/OpenData/index.d.ts +24 -0
  51. package/dist/modules/OpenData/index.js +173 -0
  52. package/dist/modules/OpenData/types.d.ts +73 -0
  53. package/dist/modules/OpenData/types.js +1 -0
  54. package/dist/modules/OpenData/utils.d.ts +2 -0
  55. package/dist/modules/OpenData/utils.js +75 -0
  56. package/dist/modules/Order/index.d.ts +58 -1
  57. package/dist/modules/Order/index.js +796 -29
  58. package/dist/modules/Order/types.d.ts +144 -12
  59. package/dist/modules/Order/utils.d.ts +28 -0
  60. package/dist/modules/Order/utils.js +250 -1
  61. package/dist/modules/Product/index.d.ts +1 -1
  62. package/dist/modules/Product/utils.js +2 -2
  63. package/dist/modules/ProductList/index.d.ts +1 -1
  64. package/dist/modules/ProductList/index.js +2 -1
  65. package/dist/modules/Quotation/index.d.ts +48 -0
  66. package/dist/modules/Quotation/index.js +245 -0
  67. package/dist/modules/Quotation/types.d.ts +42 -0
  68. package/dist/modules/Quotation/types.js +1 -0
  69. package/dist/modules/Rules/index.js +4 -1
  70. package/dist/modules/SalesSummary/index.d.ts +63 -0
  71. package/dist/modules/SalesSummary/index.js +174 -0
  72. package/dist/modules/SalesSummary/types.d.ts +59 -0
  73. package/dist/modules/SalesSummary/types.js +1 -0
  74. package/dist/modules/SalesSummary/utils.d.ts +30 -0
  75. package/dist/modules/SalesSummary/utils.js +513 -0
  76. package/dist/modules/ScanOrderLogger/index.d.ts +21 -0
  77. package/dist/modules/ScanOrderLogger/index.js +161 -0
  78. package/dist/modules/ScanOrderLogger/providers/feishu.d.ts +2 -0
  79. package/dist/modules/ScanOrderLogger/providers/feishu.js +95 -0
  80. package/dist/modules/ScanOrderLogger/providers/grafana.d.ts +2 -0
  81. package/dist/modules/ScanOrderLogger/providers/grafana.js +50 -0
  82. package/dist/modules/ScanOrderLogger/types.d.ts +46 -0
  83. package/dist/modules/ScanOrderLogger/types.js +1 -0
  84. package/dist/modules/Schedule/getDateIsInSchedule.js +11 -18
  85. package/dist/modules/Summary/utils.d.ts +3 -3
  86. package/dist/modules/Summary/utils.js +4 -4
  87. package/dist/modules/index.d.ts +4 -0
  88. package/dist/modules/index.js +5 -1
  89. package/dist/solution/BookingByStep/index.d.ts +1 -1
  90. package/dist/solution/BookingByStep/types.d.ts +3 -1
  91. package/dist/solution/BookingByStep/types.js +5 -1
  92. package/dist/solution/BookingTicket/index.d.ts +1 -1
  93. package/dist/solution/ScanOrder/index.d.ts +90 -0
  94. package/dist/solution/ScanOrder/index.js +1853 -0
  95. package/dist/solution/ScanOrder/types.d.ts +210 -0
  96. package/dist/solution/ScanOrder/types.js +16 -0
  97. package/dist/solution/ScanOrder/utils.d.ts +93 -0
  98. package/dist/solution/ScanOrder/utils.js +397 -0
  99. package/dist/solution/VenueBooking/index.d.ts +163 -0
  100. package/dist/solution/VenueBooking/index.js +2931 -0
  101. package/dist/solution/VenueBooking/sales-section-4-annotated.json +343 -0
  102. package/dist/solution/VenueBooking/types.d.ts +130 -0
  103. package/dist/solution/VenueBooking/types.js +21 -0
  104. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +10 -0
  105. package/dist/solution/VenueBooking/utils/dateSummary.js +102 -0
  106. package/dist/solution/VenueBooking/utils/resource.d.ts +4 -0
  107. package/dist/solution/VenueBooking/utils/resource.js +94 -0
  108. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +29 -0
  109. package/dist/solution/VenueBooking/utils/slotMerge.js +203 -0
  110. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +32 -0
  111. package/dist/solution/VenueBooking/utils/timeSlot.js +256 -0
  112. package/dist/solution/VenueBooking/utils.d.ts +1 -0
  113. package/dist/solution/VenueBooking/utils.js +1 -0
  114. package/dist/solution/index.d.ts +2 -0
  115. package/dist/solution/index.js +3 -1
  116. package/lib/apis/picoding.d.ts +0 -0
  117. package/lib/apis/picoding.js +0 -0
  118. package/lib/model/index.d.ts +1 -0
  119. package/lib/model/index.js +23 -0
  120. package/lib/model/strategy/adapter/index.d.ts +7 -0
  121. package/lib/model/strategy/adapter/index.js +57 -0
  122. package/lib/model/strategy/adapter/itemRule/adapter.d.ts +59 -0
  123. package/lib/model/strategy/adapter/itemRule/adapter.js +338 -0
  124. package/lib/model/strategy/adapter/itemRule/evaluator.d.ts +43 -0
  125. package/lib/model/strategy/adapter/itemRule/evaluator.js +124 -0
  126. package/lib/model/strategy/adapter/itemRule/examples.d.ts +64 -0
  127. package/lib/model/strategy/adapter/itemRule/examples.js +269 -0
  128. package/lib/model/strategy/adapter/itemRule/index.d.ts +5 -0
  129. package/lib/model/strategy/adapter/itemRule/index.js +58 -0
  130. package/lib/model/strategy/adapter/itemRule/type.d.ts +206 -0
  131. package/lib/model/strategy/adapter/itemRule/type.js +46 -0
  132. package/lib/model/strategy/adapter/promotion/adapter.d.ts +66 -0
  133. package/lib/model/strategy/adapter/promotion/adapter.js +217 -0
  134. package/lib/model/strategy/adapter/promotion/evaluator.d.ts +213 -0
  135. package/lib/model/strategy/adapter/promotion/evaluator.js +844 -0
  136. package/lib/model/strategy/adapter/promotion/examples.d.ts +138 -0
  137. package/lib/model/strategy/adapter/promotion/examples.js +192 -0
  138. package/lib/model/strategy/adapter/promotion/index.d.ts +4 -0
  139. package/lib/model/strategy/adapter/promotion/index.js +49 -0
  140. package/lib/model/strategy/adapter/promotion/type.d.ts +447 -0
  141. package/lib/model/strategy/adapter/promotion/type.js +51 -0
  142. package/lib/model/strategy/adapter/type.d.ts +28 -0
  143. package/lib/model/strategy/adapter/type.js +17 -0
  144. package/lib/model/strategy/adapter/walletPass/evaluator.d.ts +84 -0
  145. package/lib/model/strategy/adapter/walletPass/evaluator.js +424 -0
  146. package/lib/model/strategy/adapter/walletPass/example.d.ts +4 -0
  147. package/lib/model/strategy/adapter/walletPass/example.js +207 -0
  148. package/lib/model/strategy/adapter/walletPass/index.d.ts +32 -0
  149. package/lib/model/strategy/adapter/walletPass/index.js +142 -0
  150. package/lib/model/strategy/adapter/walletPass/locales.d.ts +1 -0
  151. package/lib/model/strategy/adapter/walletPass/locales.js +54 -0
  152. package/lib/model/strategy/adapter/walletPass/type.d.ts +187 -0
  153. package/lib/model/strategy/adapter/walletPass/type.js +17 -0
  154. package/lib/model/strategy/adapter/walletPass/utils.d.ts +50 -0
  155. package/lib/model/strategy/adapter/walletPass/utils.js +791 -0
  156. package/lib/model/strategy/engine.d.ts +106 -0
  157. package/lib/model/strategy/engine.js +450 -0
  158. package/lib/model/strategy/index.d.ts +3 -0
  159. package/lib/model/strategy/index.js +38 -0
  160. package/lib/model/strategy/strategy-example.d.ts +5 -0
  161. package/lib/model/strategy/strategy-example.js +318 -0
  162. package/lib/model/strategy/type.d.ts +228 -0
  163. package/lib/model/strategy/type.js +44 -0
  164. package/lib/modules/Cart/utils/cartProduct.js +1 -0
  165. package/lib/modules/OpenData/index.d.ts +24 -0
  166. package/lib/modules/OpenData/index.js +119 -0
  167. package/lib/modules/OpenData/types.d.ts +73 -0
  168. package/lib/modules/OpenData/types.js +17 -0
  169. package/lib/modules/OpenData/utils.d.ts +2 -0
  170. package/lib/modules/OpenData/utils.js +111 -0
  171. package/lib/modules/Order/index.d.ts +58 -1
  172. package/lib/modules/Order/index.js +437 -1
  173. package/lib/modules/Order/types.d.ts +144 -12
  174. package/lib/modules/Order/utils.d.ts +28 -0
  175. package/lib/modules/Order/utils.js +250 -2
  176. package/lib/modules/Product/index.d.ts +1 -1
  177. package/lib/modules/Product/utils.js +2 -2
  178. package/lib/modules/ProductList/index.d.ts +1 -1
  179. package/lib/modules/ProductList/index.js +2 -1
  180. package/lib/modules/Quotation/index.d.ts +48 -0
  181. package/lib/modules/Quotation/index.js +149 -0
  182. package/lib/modules/Quotation/types.d.ts +42 -0
  183. package/lib/modules/Quotation/types.js +17 -0
  184. package/lib/modules/Rules/index.js +4 -1
  185. package/lib/modules/SalesSummary/index.d.ts +63 -0
  186. package/lib/modules/SalesSummary/index.js +105 -0
  187. package/lib/modules/SalesSummary/types.d.ts +59 -0
  188. package/lib/modules/SalesSummary/types.js +17 -0
  189. package/lib/modules/SalesSummary/utils.d.ts +30 -0
  190. package/lib/modules/SalesSummary/utils.js +452 -0
  191. package/lib/modules/ScanOrderLogger/index.d.ts +21 -0
  192. package/lib/modules/ScanOrderLogger/index.js +135 -0
  193. package/lib/modules/ScanOrderLogger/providers/feishu.d.ts +2 -0
  194. package/lib/modules/ScanOrderLogger/providers/feishu.js +82 -0
  195. package/lib/modules/ScanOrderLogger/providers/grafana.d.ts +2 -0
  196. package/lib/modules/ScanOrderLogger/providers/grafana.js +52 -0
  197. package/lib/modules/ScanOrderLogger/types.d.ts +46 -0
  198. package/lib/modules/ScanOrderLogger/types.js +17 -0
  199. package/lib/modules/Schedule/getDateIsInSchedule.js +9 -11
  200. package/lib/modules/Summary/utils.d.ts +3 -3
  201. package/lib/modules/Summary/utils.js +4 -4
  202. package/lib/modules/index.d.ts +4 -0
  203. package/lib/modules/index.js +9 -1
  204. package/lib/solution/BookingByStep/index.d.ts +1 -1
  205. package/lib/solution/BookingByStep/types.d.ts +3 -1
  206. package/lib/solution/BookingByStep/types.js +10 -0
  207. package/lib/solution/BookingTicket/index.d.ts +1 -1
  208. package/lib/solution/ScanOrder/index.d.ts +90 -0
  209. package/lib/solution/ScanOrder/index.js +1071 -0
  210. package/lib/solution/ScanOrder/types.d.ts +210 -0
  211. package/lib/solution/ScanOrder/types.js +36 -0
  212. package/lib/solution/ScanOrder/utils.d.ts +93 -0
  213. package/lib/solution/ScanOrder/utils.js +359 -0
  214. package/lib/solution/VenueBooking/index.d.ts +163 -0
  215. package/lib/solution/VenueBooking/index.js +1578 -0
  216. package/lib/solution/VenueBooking/sales-section-4-annotated.json +343 -0
  217. package/lib/solution/VenueBooking/types.d.ts +130 -0
  218. package/lib/solution/VenueBooking/types.js +44 -0
  219. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +10 -0
  220. package/lib/solution/VenueBooking/utils/dateSummary.js +101 -0
  221. package/lib/solution/VenueBooking/utils/resource.d.ts +4 -0
  222. package/lib/solution/VenueBooking/utils/resource.js +80 -0
  223. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +29 -0
  224. package/lib/solution/VenueBooking/utils/slotMerge.js +208 -0
  225. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +32 -0
  226. package/lib/solution/VenueBooking/utils/timeSlot.js +200 -0
  227. package/lib/solution/VenueBooking/utils.d.ts +1 -0
  228. package/lib/solution/VenueBooking/utils.js +69 -0
  229. package/lib/solution/index.d.ts +2 -0
  230. package/lib/solution/index.js +5 -1
  231. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
2
3
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
3
4
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
5
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -24,14 +25,17 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
24
25
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
25
26
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
26
27
  import { BaseModule } from "../BaseModule";
27
- import { generateDuration, getAllDiscountList, mergeRelationForms } from "./utils";
28
+ import { generateDuration, getAllDiscountList, mergeRelationForms, buildSubmitPayload, createDefaultTempOrder, createEmptySummary, formatDateTime, formatV1Product, isTempOrder } from "./utils";
28
29
  import { isNormalProduct } from "../Product/utils";
29
30
  import dayjs from 'dayjs';
31
+ import { getProductIdentityIndex, getSafeProductNum, isIdentityMatch, normalizeOrderProduct } from "../../solution/ScanOrder/utils";
32
+ import { DiscountModule } from "../Discount";
33
+ import { RulesModule } from "../Rules";
34
+ import { UnavailableReason } from "../Rules/types";
35
+ import Decimal from 'decimal.js';
30
36
  export var OrderModule = /*#__PURE__*/function (_BaseModule) {
31
37
  _inherits(OrderModule, _BaseModule);
32
38
  var _super = _createSuper(OrderModule);
33
- // LoggerManager 实例
34
-
35
39
  function OrderModule(name, version) {
36
40
  var _this;
37
41
  _classCallCheck(this, OrderModule);
@@ -41,30 +45,46 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
41
45
  _defineProperty(_assertThisInitialized(_this), "store", void 0);
42
46
  _defineProperty(_assertThisInitialized(_this), "request", void 0);
43
47
  _defineProperty(_assertThisInitialized(_this), "logger", void 0);
48
+ // LoggerManager 实例
49
+ _defineProperty(_assertThisInitialized(_this), "window", void 0);
50
+ _defineProperty(_assertThisInitialized(_this), "cacheId", void 0);
51
+ _defineProperty(_assertThisInitialized(_this), "salesSummaryModuleName", void 0);
52
+ _defineProperty(_assertThisInitialized(_this), "rulesHooksOverride", void 0);
44
53
  return _this;
45
54
  }
46
55
  _createClass(OrderModule, [{
47
56
  key: "initialize",
48
57
  value: function () {
49
58
  var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(core, options) {
50
- var appPlugin, app;
59
+ var _otherParams$rules;
60
+ var otherParams, appPlugin, app;
51
61
  return _regeneratorRuntime().wrap(function _callee$(_context) {
52
62
  while (1) switch (_context.prev = _context.next) {
53
63
  case 0:
54
64
  this.core = core;
55
65
  this.store = options.store;
66
+ if (!this.store.tempOrder) {
67
+ this.store.tempOrder = null;
68
+ }
56
69
  this.request = this.core.getPlugin('request');
70
+ this.window = this.core.getPlugin('window');
71
+ otherParams = options.otherParams || {};
72
+ this.cacheId = otherParams.cacheId;
73
+ this.salesSummaryModuleName = otherParams.salesSummaryModuleName;
74
+ this.rulesHooksOverride = (_otherParams$rules = otherParams.rules) === null || _otherParams$rules === void 0 ? void 0 : _otherParams$rules.hooks;
75
+ this.registerDiscountModules(options);
76
+ this.restoreTempOrderFromStorage();
57
77
  appPlugin = this.core.getPlugin('app');
58
78
  if (appPlugin) {
59
- _context.next = 6;
79
+ _context.next = 14;
60
80
  break;
61
81
  }
62
82
  throw new Error('Order 模块需要 app 插件支持');
63
- case 6:
83
+ case 14:
64
84
  app = appPlugin.getApp();
65
85
  this.logger = app.logger;
66
86
  this.logInfo('OrderModule initialized successfully');
67
- case 9:
87
+ case 17:
68
88
  case "end":
69
89
  return _context.stop();
70
90
  }
@@ -119,6 +139,654 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
119
139
  });
120
140
  }
121
141
  }
142
+
143
+ // ─── Discount: 子模块注册 ───
144
+ }, {
145
+ key: "registerDiscountModules",
146
+ value: function registerDiscountModules(options) {
147
+ var _targetCacheData;
148
+ var targetCacheData = {};
149
+ if (this.cacheId && this.window) {
150
+ var sessionData = this.window.sessionStorage.getItem(this.name);
151
+ if (sessionData) {
152
+ try {
153
+ var data = JSON.parse(sessionData);
154
+ targetCacheData = (data === null || data === void 0 ? void 0 : data[this.cacheId]) || {};
155
+ } catch (_unused) {
156
+ // sessionStorage 损坏则忽略,按空 initialState 走
157
+ }
158
+ }
159
+ }
160
+ var discount = new DiscountModule("".concat(this.name, "_discount"));
161
+ this.core.registerModule(discount, {
162
+ initialState: (_targetCacheData = targetCacheData) === null || _targetCacheData === void 0 ? void 0 : _targetCacheData[discount.name],
163
+ otherParams: {
164
+ fatherModule: this.name,
165
+ openCache: !!this.cacheId,
166
+ cacheId: this.cacheId
167
+ }
168
+ });
169
+ this.store.discount = discount;
170
+ var rules = new RulesModule("".concat(this.name, "_rules"));
171
+ this.core.registerModule(rules, {
172
+ hooks: this.rulesHooksOverride || this.createDefaultRulesHooks()
173
+ });
174
+ this.store.rules = rules;
175
+ }
176
+ }, {
177
+ key: "createDefaultRulesHooks",
178
+ value: function createDefaultRulesHooks() {
179
+ return {
180
+ getProduct: function getProduct(product) {
181
+ var _product$_origin, _product$_origin2, _product$_origin3, _product$_origin4;
182
+ return {
183
+ id: product.product_id,
184
+ _id: product.identity_key ? "".concat(product.product_id, "_").concat(product.product_variant_id, "_").concat(product.identity_key) : "".concat(product.product_id, "_").concat(product.product_variant_id),
185
+ price: product.selling_price,
186
+ total: new Decimal(product.payment_price || product.selling_price || 0).times(product.num || 1).toNumber(),
187
+ origin_total: new Decimal(product.original_price || product.selling_price || 0).times(product.num || 1).toNumber(),
188
+ original_price: product.original_price,
189
+ quantity: product.num || 1,
190
+ num: product.num || 1,
191
+ discount_list: product.discount_list || [],
192
+ bundle: product.product_bundle || [],
193
+ booking_id: ((_product$_origin = product._origin) === null || _product$_origin === void 0 ? void 0 : _product$_origin.booking_id) || null,
194
+ isClient: false,
195
+ isManualDiscount: ((_product$_origin2 = product._origin) === null || _product$_origin2 === void 0 ? void 0 : _product$_origin2.isManualDiscount) || false,
196
+ holder_id: (_product$_origin3 = product._origin) === null || _product$_origin3 === void 0 ? void 0 : _product$_origin3.holder_id,
197
+ startDate: (_product$_origin4 = product._origin) === null || _product$_origin4 === void 0 ? void 0 : _product$_origin4.startDate
198
+ };
199
+ },
200
+ setProduct: function setProduct(product, values) {
201
+ var _values$discount_list, _values$quantity, _values$bundle;
202
+ return _objectSpread(_objectSpread({}, product), {}, {
203
+ selling_price: values.price !== undefined ? String(values.price) : product.selling_price,
204
+ payment_price: values.total !== undefined ? String(values.total) : product.payment_price,
205
+ original_price: values.original_price !== undefined ? String(values.original_price) : product.original_price,
206
+ discount_list: (_values$discount_list = values.discount_list) !== null && _values$discount_list !== void 0 ? _values$discount_list : product.discount_list,
207
+ num: (_values$quantity = values.quantity) !== null && _values$quantity !== void 0 ? _values$quantity : product.num,
208
+ product_bundle: (_values$bundle = values.bundle) !== null && _values$bundle !== void 0 ? _values$bundle : product.product_bundle,
209
+ metadata: _objectSpread(_objectSpread({}, product.metadata || {}), values.main_product_selling_price !== undefined ? {
210
+ main_product_selling_price: String(values.main_product_selling_price)
211
+ } : {})
212
+ });
213
+ }
214
+ };
215
+ }
216
+
217
+ // ─── Discount: 公共 API ───
218
+ }, {
219
+ key: "loadDiscountConfig",
220
+ value: function () {
221
+ var _loadDiscountConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(params) {
222
+ var _this$store$discount, _this$store$tempOrder;
223
+ var discountList, _this$store$discount2;
224
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
225
+ while (1) switch (_context2.prev = _context2.next) {
226
+ case 0:
227
+ _context2.next = 2;
228
+ return (_this$store$discount = this.store.discount) === null || _this$store$discount === void 0 ? void 0 : _this$store$discount.loadPrepareConfig({
229
+ customer_id: params.customerId,
230
+ action: params.action || 'create',
231
+ with_good_pass: 1,
232
+ with_discount_card: 1,
233
+ with_wallet_pass_holder: 1,
234
+ request_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
235
+ });
236
+ case 2:
237
+ discountList = _context2.sent;
238
+ if (discountList) {
239
+ (_this$store$discount2 = this.store.discount) === null || _this$store$discount2 === void 0 || _this$store$discount2.setDiscountList(discountList);
240
+ }
241
+ if ((_this$store$tempOrder = this.store.tempOrder) !== null && _this$store$tempOrder !== void 0 && (_this$store$tempOrder = _this$store$tempOrder.products) !== null && _this$store$tempOrder !== void 0 && _this$store$tempOrder.length) {
242
+ this.applyDiscount();
243
+ }
244
+ case 5:
245
+ case "end":
246
+ return _context2.stop();
247
+ }
248
+ }, _callee2, this);
249
+ }));
250
+ function loadDiscountConfig(_x3) {
251
+ return _loadDiscountConfig.apply(this, arguments);
252
+ }
253
+ return loadDiscountConfig;
254
+ }()
255
+ }, {
256
+ key: "getDiscountList",
257
+ value: function getDiscountList() {
258
+ var _this$store$discount3;
259
+ return ((_this$store$discount3 = this.store.discount) === null || _this$store$discount3 === void 0 ? void 0 : _this$store$discount3.getDiscountList()) || [];
260
+ }
261
+ }, {
262
+ key: "scanCode",
263
+ value: function () {
264
+ var _scanCode = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(code, customerId) {
265
+ var _this$store$discount4, _tempOrder$holder, _tempOrder$holder2;
266
+ var resultDiscountList, rulesModule, withScanList, currentSelected, tempOrder, holders, _ref, isAvailable, newDiscountList, unavailableReason, _this$store$discount5;
267
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
268
+ while (1) switch (_context3.prev = _context3.next) {
269
+ case 0:
270
+ _context3.next = 2;
271
+ return (_this$store$discount4 = this.store.discount) === null || _this$store$discount4 === void 0 ? void 0 : _this$store$discount4.batchSearch(code, customerId);
272
+ case 2:
273
+ _context3.t0 = _context3.sent;
274
+ if (_context3.t0) {
275
+ _context3.next = 5;
276
+ break;
277
+ }
278
+ _context3.t0 = [];
279
+ case 5:
280
+ resultDiscountList = _context3.t0;
281
+ rulesModule = this.store.rules;
282
+ if (rulesModule) {
283
+ _context3.next = 9;
284
+ break;
285
+ }
286
+ return _context3.abrupt("return", {
287
+ type: 'clientCalc',
288
+ isAvailable: false,
289
+ discountList: this.getDiscountList(),
290
+ unavailableReason: UnavailableReason.Unknown
291
+ });
292
+ case 9:
293
+ if (resultDiscountList.length) {
294
+ _context3.next = 11;
295
+ break;
296
+ }
297
+ return _context3.abrupt("return", {
298
+ type: 'server',
299
+ isAvailable: false,
300
+ discountList: this.getDiscountList()
301
+ });
302
+ case 11:
303
+ withScanList = resultDiscountList.map(function (item) {
304
+ return _objectSpread(_objectSpread({}, item), {}, {
305
+ isScan: true
306
+ });
307
+ });
308
+ currentSelected = this.getDiscountList().filter(function (n) {
309
+ return n.isSelected;
310
+ });
311
+ if (!(currentSelected.length && currentSelected.some(function (n) {
312
+ return withScanList.some(function (m) {
313
+ return m.id === n.id;
314
+ });
315
+ }))) {
316
+ _context3.next = 15;
317
+ break;
318
+ }
319
+ return _context3.abrupt("return", {
320
+ type: 'clientCalc',
321
+ isAvailable: true,
322
+ discountList: this.getDiscountList()
323
+ });
324
+ case 15:
325
+ tempOrder = this.store.tempOrder;
326
+ holders = tempOrder !== null && tempOrder !== void 0 && (_tempOrder$holder = tempOrder.holder) !== null && _tempOrder$holder !== void 0 && _tempOrder$holder.form_record_id ? [{
327
+ form_record_id: tempOrder.holder.form_record_id
328
+ }] : [];
329
+ _ref = rulesModule.isDiscountListAvailable({
330
+ productList: (tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.products) || [],
331
+ oldDiscountList: this.getDiscountList(),
332
+ newDiscountList: withScanList,
333
+ holders: holders,
334
+ isFormSubject: !!(tempOrder !== null && tempOrder !== void 0 && (_tempOrder$holder2 = tempOrder.holder) !== null && _tempOrder$holder2 !== void 0 && _tempOrder$holder2.type) && tempOrder.holder.type === 'form'
335
+ }) || {
336
+ isAvailable: false,
337
+ discountList: this.getDiscountList()
338
+ }, isAvailable = _ref.isAvailable, newDiscountList = _ref.discountList, unavailableReason = _ref.unavailableReason;
339
+ if (isAvailable && newDiscountList) {
340
+ (_this$store$discount5 = this.store.discount) === null || _this$store$discount5 === void 0 || _this$store$discount5.setDiscountList(newDiscountList);
341
+ this.applyDiscount();
342
+ }
343
+ return _context3.abrupt("return", {
344
+ type: 'clientCalc',
345
+ isAvailable: isAvailable || false,
346
+ discountList: newDiscountList || this.getDiscountList(),
347
+ unavailableReason: unavailableReason
348
+ });
349
+ case 20:
350
+ case "end":
351
+ return _context3.stop();
352
+ }
353
+ }, _callee3, this);
354
+ }));
355
+ function scanCode(_x4, _x5) {
356
+ return _scanCode.apply(this, arguments);
357
+ }
358
+ return scanCode;
359
+ }()
360
+ }, {
361
+ key: "applyDiscount",
362
+ value: function applyDiscount() {
363
+ var _tempOrder$products, _this$store$discount6, _tempOrder$holder3, _tempOrder$holder4;
364
+ var tempOrder = this.store.tempOrder;
365
+ if (!(tempOrder !== null && tempOrder !== void 0 && (_tempOrder$products = tempOrder.products) !== null && _tempOrder$products !== void 0 && _tempOrder$products.length)) return;
366
+ var rulesModule = this.store.rules;
367
+ if (!rulesModule) return;
368
+ var discountList = ((_this$store$discount6 = this.store.discount) === null || _this$store$discount6 === void 0 ? void 0 : _this$store$discount6.getDiscountList()) || [];
369
+ var holders = (_tempOrder$holder3 = tempOrder.holder) !== null && _tempOrder$holder3 !== void 0 && _tempOrder$holder3.form_record_id ? [{
370
+ form_record_id: tempOrder.holder.form_record_id
371
+ }] : [];
372
+ var result = rulesModule.calcDiscount({
373
+ productList: tempOrder.products,
374
+ discountList: discountList,
375
+ holders: holders,
376
+ isFormSubject: !!((_tempOrder$holder4 = tempOrder.holder) !== null && _tempOrder$holder4 !== void 0 && _tempOrder$holder4.type) && tempOrder.holder.type === 'form'
377
+ });
378
+ if (result !== null && result !== void 0 && result.productList) {
379
+ tempOrder.products = result.productList;
380
+ }
381
+ if (result !== null && result !== void 0 && result.discountList) {
382
+ var _this$store$discount7;
383
+ OrderModule.populateSavedAmounts(result.productList || tempOrder.products, result.discountList);
384
+ (_this$store$discount7 = this.store.discount) === null || _this$store$discount7 === void 0 || _this$store$discount7.setDiscountList(result.discountList);
385
+ tempOrder.discount_list = result.discountList.filter(function (d) {
386
+ return d.isSelected;
387
+ });
388
+ }
389
+ }
390
+
391
+ // ─── TempOrder: 初始化入口 ───
392
+ }, {
393
+ key: "initTempOrder",
394
+ value: function initTempOrder(params) {
395
+ if (params.cacheId !== undefined) this.cacheId = params.cacheId;
396
+ if (params.salesSummaryModuleName !== undefined) this.salesSummaryModuleName = params.salesSummaryModuleName;
397
+ this.restoreTempOrderFromStorage();
398
+ }
399
+
400
+ // ─── TempOrder: localStorage 持久化 ───
401
+ }, {
402
+ key: "getTempOrderStorageKey",
403
+ value: function getTempOrderStorageKey() {
404
+ if (!this.cacheId) return null;
405
+ return "scanOrder:tempOrder:".concat(this.cacheId);
406
+ }
407
+ }, {
408
+ key: "restoreTempOrderFromStorage",
409
+ value: function restoreTempOrderFromStorage() {
410
+ var key = this.getTempOrderStorageKey();
411
+ if (!key) return;
412
+ if (!this.window) return;
413
+ var cachedData = this.window.localStorage.getItem(key);
414
+ if (!cachedData) return;
415
+ try {
416
+ var parsedData = JSON.parse(cachedData);
417
+ if (!isTempOrder(parsedData)) {
418
+ this.window.localStorage.removeItem(key);
419
+ return;
420
+ }
421
+ this.store.tempOrder = parsedData;
422
+ } catch (_unused2) {
423
+ var _this$window;
424
+ (_this$window = this.window) === null || _this$window === void 0 || (_this$window = _this$window.localStorage) === null || _this$window === void 0 || _this$window.removeItem(key);
425
+ }
426
+ }
427
+ }, {
428
+ key: "persistTempOrder",
429
+ value: function persistTempOrder() {
430
+ var key = this.getTempOrderStorageKey();
431
+ if (!key || !this.store.tempOrder) return;
432
+ if (!this.window) return;
433
+ this.window.localStorage.setItem(key, JSON.stringify(this.store.tempOrder));
434
+ }
435
+
436
+ // ─── TempOrder: 创建 & 获取 ───
437
+ }, {
438
+ key: "createDefaultTempOrderInstance",
439
+ value: function createDefaultTempOrderInstance() {
440
+ return createDefaultTempOrder({
441
+ now: formatDateTime(new Date()),
442
+ summary: createEmptySummary()
443
+ });
444
+ }
445
+ }, {
446
+ key: "ensureTempOrder",
447
+ value: function ensureTempOrder() {
448
+ if (this.store.tempOrder) return this.store.tempOrder;
449
+ var newOrder = this.createDefaultTempOrderInstance();
450
+ this.store.tempOrder = newOrder;
451
+ this.persistTempOrder();
452
+ return newOrder;
453
+ }
454
+ }, {
455
+ key: "getTempOrder",
456
+ value: function getTempOrder() {
457
+ return this.store.tempOrder;
458
+ }
459
+ }, {
460
+ key: "addNewOrder",
461
+ value: function () {
462
+ var _addNewOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
463
+ var tempOrder;
464
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
465
+ while (1) switch (_context4.prev = _context4.next) {
466
+ case 0:
467
+ tempOrder = this.ensureTempOrder();
468
+ _context4.next = 3;
469
+ return this.recalculateSummary({
470
+ createIfMissing: true
471
+ });
472
+ case 3:
473
+ this.persistTempOrder();
474
+ return _context4.abrupt("return", tempOrder);
475
+ case 5:
476
+ case "end":
477
+ return _context4.stop();
478
+ }
479
+ }, _callee4, this);
480
+ }));
481
+ function addNewOrder() {
482
+ return _addNewOrder.apply(this, arguments);
483
+ }
484
+ return addNewOrder;
485
+ }()
486
+ }, {
487
+ key: "getOrderProducts",
488
+ value: function getOrderProducts() {
489
+ var tempOrder = this.ensureTempOrder();
490
+ return tempOrder.products;
491
+ }
492
+
493
+ // ─── TempOrder: 金额汇总 ───
494
+ }, {
495
+ key: "getSalesSummary",
496
+ value: function getSalesSummary() {
497
+ if (!this.salesSummaryModuleName) return null;
498
+ return this.core.getModule(this.salesSummaryModuleName);
499
+ }
500
+ }, {
501
+ key: "recalculateSummary",
502
+ value: function () {
503
+ var _recalculateSummary = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(options) {
504
+ var tempOrder, salesSummary, summary;
505
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
506
+ while (1) switch (_context5.prev = _context5.next) {
507
+ case 0:
508
+ tempOrder = options !== null && options !== void 0 && options.createIfMissing ? this.ensureTempOrder() : this.store.tempOrder;
509
+ if (tempOrder) {
510
+ _context5.next = 3;
511
+ break;
512
+ }
513
+ return _context5.abrupt("return", null);
514
+ case 3:
515
+ salesSummary = this.getSalesSummary();
516
+ if (salesSummary) {
517
+ _context5.next = 8;
518
+ break;
519
+ }
520
+ tempOrder.summary = createEmptySummary();
521
+ tempOrder.surcharge_fee = tempOrder.summary.surcharge_fee;
522
+ return _context5.abrupt("return", tempOrder.summary);
523
+ case 8:
524
+ _context5.next = 10;
525
+ return salesSummary.getSummary({
526
+ products: tempOrder.products
527
+ });
528
+ case 10:
529
+ summary = _context5.sent;
530
+ tempOrder.summary = summary;
531
+ if (summary.is_price_include_tax !== undefined) {
532
+ tempOrder.is_price_include_tax = summary.is_price_include_tax;
533
+ }
534
+ if (typeof summary.tax_title === 'string') {
535
+ tempOrder.tax_title = summary.tax_title;
536
+ }
537
+ tempOrder.surcharge_fee = summary.surcharge_fee;
538
+ tempOrder.surcharges = summary.surcharges || [];
539
+ tempOrder.deposit_amount = summary.deposit_amount || '0.00';
540
+ tempOrder.is_deposit = summary.deposit_amount !== '0.00' ? 1 : 0;
541
+ tempOrder.shop_discount = summary.discount_amount || '0.00';
542
+ return _context5.abrupt("return", tempOrder.summary);
543
+ case 20:
544
+ case "end":
545
+ return _context5.stop();
546
+ }
547
+ }, _callee5, this);
548
+ }));
549
+ function recalculateSummary(_x6) {
550
+ return _recalculateSummary.apply(this, arguments);
551
+ }
552
+ return recalculateSummary;
553
+ }()
554
+ }, {
555
+ key: "getScanOrderSummary",
556
+ value: function () {
557
+ var _getScanOrderSummary = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
558
+ var summary;
559
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
560
+ while (1) switch (_context6.prev = _context6.next) {
561
+ case 0:
562
+ _context6.next = 2;
563
+ return this.recalculateSummary({
564
+ createIfMissing: true
565
+ });
566
+ case 2:
567
+ summary = _context6.sent;
568
+ if (summary) {
569
+ _context6.next = 5;
570
+ break;
571
+ }
572
+ return _context6.abrupt("return", createEmptySummary());
573
+ case 5:
574
+ this.persistTempOrder();
575
+ return _context6.abrupt("return", summary);
576
+ case 7:
577
+ case "end":
578
+ return _context6.stop();
579
+ }
580
+ }, _callee6, this);
581
+ }));
582
+ function getScanOrderSummary() {
583
+ return _getScanOrderSummary.apply(this, arguments);
584
+ }
585
+ return getScanOrderSummary;
586
+ }() // ─── TempOrder: 备注 ───
587
+ }, {
588
+ key: "updateTempOrderNote",
589
+ value: function updateTempOrderNote(note) {
590
+ var tempOrder = this.ensureTempOrder();
591
+ tempOrder.note = String(note || '');
592
+ this.persistTempOrder();
593
+ return tempOrder.note;
594
+ }
595
+ }, {
596
+ key: "updateTempOrderContactsInfo",
597
+ value: function updateTempOrderContactsInfo(contactsInfo) {
598
+ var tempOrder = this.ensureTempOrder();
599
+ tempOrder.contacts_info = Array.isArray(contactsInfo) ? contactsInfo : [];
600
+ this.persistTempOrder();
601
+ return tempOrder.contacts_info;
602
+ }
603
+
604
+ // ─── TempOrder: 商品 CRUD ───
605
+ }, {
606
+ key: "addProductToOrder",
607
+ value: function () {
608
+ var _addProductToOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(product) {
609
+ var tempOrder, normalizedProduct, productIndex, targetProduct;
610
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
611
+ while (1) switch (_context7.prev = _context7.next) {
612
+ case 0:
613
+ tempOrder = this.ensureTempOrder();
614
+ normalizedProduct = normalizeOrderProduct(product);
615
+ productIndex = getProductIdentityIndex(tempOrder.products, normalizedProduct);
616
+ if (productIndex === -1) {
617
+ tempOrder.products.push(normalizedProduct);
618
+ } else {
619
+ targetProduct = tempOrder.products[productIndex];
620
+ tempOrder.products[productIndex] = _objectSpread(_objectSpread(_objectSpread({}, targetProduct), normalizedProduct), {}, {
621
+ num: getSafeProductNum(targetProduct.num + normalizedProduct.num),
622
+ _origin: normalizedProduct._origin || targetProduct._origin
623
+ });
624
+ }
625
+ this.applyDiscount();
626
+ _context7.next = 7;
627
+ return this.recalculateSummary({
628
+ createIfMissing: true
629
+ });
630
+ case 7:
631
+ this.persistTempOrder();
632
+ return _context7.abrupt("return", tempOrder.products);
633
+ case 9:
634
+ case "end":
635
+ return _context7.stop();
636
+ }
637
+ }, _callee7, this);
638
+ }));
639
+ function addProductToOrder(_x7) {
640
+ return _addProductToOrder.apply(this, arguments);
641
+ }
642
+ return addProductToOrder;
643
+ }()
644
+ }, {
645
+ key: "updateProductInOrder",
646
+ value: function () {
647
+ var _updateProductInOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(params) {
648
+ var product_id, product_variant_id, updates, tempOrder, productIndex, targetProduct, nextProduct;
649
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
650
+ while (1) switch (_context8.prev = _context8.next) {
651
+ case 0:
652
+ product_id = params.product_id, product_variant_id = params.product_variant_id, updates = params.updates;
653
+ tempOrder = this.ensureTempOrder();
654
+ productIndex = getProductIdentityIndex(tempOrder.products, {
655
+ product_id: product_id,
656
+ product_variant_id: product_variant_id
657
+ });
658
+ if (!(productIndex === -1)) {
659
+ _context8.next = 5;
660
+ break;
661
+ }
662
+ throw new Error('[Order] 目标商品不存在,无法更新');
663
+ case 5:
664
+ targetProduct = tempOrder.products[productIndex];
665
+ nextProduct = _objectSpread(_objectSpread(_objectSpread({}, targetProduct), updates), {}, {
666
+ product_id: product_id,
667
+ product_variant_id: product_variant_id
668
+ });
669
+ nextProduct.num = getSafeProductNum(nextProduct.num);
670
+ tempOrder.products[productIndex] = nextProduct;
671
+ this.applyDiscount();
672
+ _context8.next = 12;
673
+ return this.recalculateSummary({
674
+ createIfMissing: true
675
+ });
676
+ case 12:
677
+ this.persistTempOrder();
678
+ return _context8.abrupt("return", tempOrder.products);
679
+ case 14:
680
+ case "end":
681
+ return _context8.stop();
682
+ }
683
+ }, _callee8, this);
684
+ }));
685
+ function updateProductInOrder(_x8) {
686
+ return _updateProductInOrder.apply(this, arguments);
687
+ }
688
+ return updateProductInOrder;
689
+ }()
690
+ }, {
691
+ key: "removeProductFromOrder",
692
+ value: function () {
693
+ var _removeProductFromOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(identity) {
694
+ var tempOrder, beforeProducts, removedByStrictIdentity;
695
+ return _regeneratorRuntime().wrap(function _callee9$(_context9) {
696
+ while (1) switch (_context9.prev = _context9.next) {
697
+ case 0:
698
+ tempOrder = this.ensureTempOrder();
699
+ beforeProducts = tempOrder.products;
700
+ tempOrder.products = tempOrder.products.filter(function (item) {
701
+ return !isIdentityMatch(item, identity);
702
+ });
703
+ removedByStrictIdentity = beforeProducts.length - tempOrder.products.length;
704
+ if (removedByStrictIdentity === 0 && identity.identity_key) {
705
+ tempOrder.products = tempOrder.products.filter(function (item) {
706
+ var isSameProduct = String(item.product_id) === String(identity.product_id) && String(item.product_variant_id) === String(identity.product_variant_id);
707
+ var hasNoIdentityKey = !item.identity_key;
708
+ return !(isSameProduct && hasNoIdentityKey);
709
+ });
710
+ }
711
+ this.applyDiscount();
712
+ _context9.next = 8;
713
+ return this.recalculateSummary({
714
+ createIfMissing: true
715
+ });
716
+ case 8:
717
+ this.persistTempOrder();
718
+ return _context9.abrupt("return", tempOrder.products);
719
+ case 10:
720
+ case "end":
721
+ return _context9.stop();
722
+ }
723
+ }, _callee9, this);
724
+ }));
725
+ function removeProductFromOrder(_x9) {
726
+ return _removeProductFromOrder.apply(this, arguments);
727
+ }
728
+ return removeProductFromOrder;
729
+ }() // ─── TempOrder: 提交 ───
730
+ }, {
731
+ key: "submitTempOrder",
732
+ value: function () {
733
+ var _submitTempOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(params) {
734
+ var _params$cacheId;
735
+ var tempOrder, effectiveCacheId, payload, result, products, moreResult;
736
+ return _regeneratorRuntime().wrap(function _callee10$(_context10) {
737
+ while (1) switch (_context10.prev = _context10.next) {
738
+ case 0:
739
+ tempOrder = this.ensureTempOrder();
740
+ this.persistTempOrder();
741
+ effectiveCacheId = (_params$cacheId = params === null || params === void 0 ? void 0 : params.cacheId) !== null && _params$cacheId !== void 0 ? _params$cacheId : this.cacheId;
742
+ payload = buildSubmitPayload({
743
+ tempOrder: tempOrder,
744
+ cacheId: effectiveCacheId
745
+ });
746
+ if (!tempOrder.order_id) {
747
+ _context10.next = 12;
748
+ break;
749
+ }
750
+ products = formatV1Product(payload.products);
751
+ _context10.next = 8;
752
+ return this.scanOrderMore({
753
+ query: {
754
+ order_id: tempOrder.order_id,
755
+ products: products,
756
+ request_unique_idempotency_token: payload.request_unique_idempotency_token
757
+ }
758
+ });
759
+ case 8:
760
+ moreResult = _context10.sent;
761
+ if (moreResult.code === 200) {
762
+ result = {
763
+ data: {
764
+ order_id: tempOrder.order_id
765
+ }
766
+ };
767
+ }
768
+ _context10.next = 15;
769
+ break;
770
+ case 12:
771
+ _context10.next = 14;
772
+ return this.submitScanOrder({
773
+ query: payload
774
+ });
775
+ case 14:
776
+ result = _context10.sent;
777
+ case 15:
778
+ return _context10.abrupt("return", result);
779
+ case 16:
780
+ case "end":
781
+ return _context10.stop();
782
+ }
783
+ }, _callee10, this);
784
+ }));
785
+ function submitTempOrder(_x10) {
786
+ return _submitTempOrder.apply(this, arguments);
787
+ }
788
+ return submitTempOrder;
789
+ }()
122
790
  }, {
123
791
  key: "createOrder",
124
792
  value: function createOrder(params) {
@@ -203,11 +871,11 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
203
871
  }, {
204
872
  key: "submitOrder",
205
873
  value: function () {
206
- var _submitOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(order) {
874
+ var _submitOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(order) {
207
875
  var _order$query$cartItem, _params$bookings, _params$relation_prod;
208
876
  var url, query, fetchUrl, params;
209
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
210
- while (1) switch (_context2.prev = _context2.next) {
877
+ return _regeneratorRuntime().wrap(function _callee11$(_context11) {
878
+ while (1) switch (_context11.prev = _context11.next) {
211
879
  case 0:
212
880
  this.logInfo('submitOrder called', {
213
881
  url: order.url,
@@ -227,14 +895,14 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
227
895
  relationProductsCount: ((_params$relation_prod = params.relation_products) === null || _params$relation_prod === void 0 ? void 0 : _params$relation_prod.length) || 0,
228
896
  scheduleDate: params.schedule_date
229
897
  });
230
- return _context2.abrupt("return", this.request.post(fetchUrl, params));
898
+ return _context11.abrupt("return", this.request.post(fetchUrl, params));
231
899
  case 6:
232
900
  case "end":
233
- return _context2.stop();
901
+ return _context11.stop();
234
902
  }
235
- }, _callee2, this);
903
+ }, _callee11, this);
236
904
  }));
237
- function submitOrder(_x3) {
905
+ function submitOrder(_x11) {
238
906
  return _submitOrder.apply(this, arguments);
239
907
  }
240
908
  return submitOrder;
@@ -252,11 +920,11 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
252
920
  }, {
253
921
  key: "createOrderByCheckout",
254
922
  value: (function () {
255
- var _createOrderByCheckout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(params) {
923
+ var _createOrderByCheckout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(params) {
256
924
  var _params$bookings2, _params$relation_prod2, _params$payments, _params$payments2, _params$bookings3, _params$relation_prod3, _params$payments3;
257
925
  var _orderData$payments, _orderData$bookings, _orderData$relation_p, _orderData$payments2, _orderData$payments3, _orderData$bookings2, _orderData$relation_p2, _orderData$payments4, _orderData$payments5, _response$data, orderData, response;
258
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
259
- while (1) switch (_context3.prev = _context3.next) {
926
+ return _regeneratorRuntime().wrap(function _callee12$(_context12) {
927
+ while (1) switch (_context12.prev = _context12.next) {
260
928
  case 0:
261
929
  this.logInfo('createOrderByCheckout called', {
262
930
  type: params.type,
@@ -285,7 +953,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
285
953
  relationProductsCount: ((_params$relation_prod3 = params.relation_products) === null || _params$relation_prod3 === void 0 ? void 0 : _params$relation_prod3.length) || 0,
286
954
  paymentsCount: ((_params$payments3 = params.payments) === null || _params$payments3 === void 0 ? void 0 : _params$payments3.length) || 0
287
955
  });
288
- _context3.prev = 2;
956
+ _context12.prev = 2;
289
957
  // 构建订单数据,设置默认值并允许 params 覆盖
290
958
  orderData = _objectSpread({
291
959
  sales_channel: 'my_pisel',
@@ -349,10 +1017,10 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
349
1017
  });
350
1018
 
351
1019
  // 调用后端接口
352
- _context3.next = 10;
1020
+ _context12.next = 10;
353
1021
  return this.request.post('/order/checkout', orderData);
354
1022
  case 10:
355
- response = _context3.sent;
1023
+ response = _context12.sent;
356
1024
  this.logInfo('Order API called successfully', {
357
1025
  response: response
358
1026
  });
@@ -360,26 +1028,125 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
360
1028
  success: !!response,
361
1029
  hasOrderId: !!(response !== null && response !== void 0 && (_response$data = response.data) !== null && _response$data !== void 0 && _response$data.order_id || response !== null && response !== void 0 && response.order_id)
362
1030
  });
363
- return _context3.abrupt("return", response);
1031
+ return _context12.abrupt("return", response);
364
1032
  case 16:
365
- _context3.prev = 16;
366
- _context3.t0 = _context3["catch"](2);
367
- console.error('[Order] createOrderByCheckout 创建订单失败:', _context3.t0);
1033
+ _context12.prev = 16;
1034
+ _context12.t0 = _context12["catch"](2);
1035
+ console.error('[Order] createOrderByCheckout 创建订单失败:', _context12.t0);
368
1036
  this.logInfo('Order API called failed', {
369
- error: _context3.t0 instanceof Error ? _context3.t0.message : String(_context3.t0)
1037
+ error: _context12.t0 instanceof Error ? _context12.t0.message : String(_context12.t0)
370
1038
  });
371
- throw _context3.t0;
1039
+ throw _context12.t0;
372
1040
  case 21:
373
1041
  case "end":
374
- return _context3.stop();
1042
+ return _context12.stop();
375
1043
  }
376
- }, _callee3, this, [[2, 16]]);
1044
+ }, _callee12, this, [[2, 16]]);
377
1045
  }));
378
- function createOrderByCheckout(_x4) {
1046
+ function createOrderByCheckout(_x12) {
379
1047
  return _createOrderByCheckout.apply(this, arguments);
380
1048
  }
381
1049
  return createOrderByCheckout;
382
1050
  }())
1051
+ }, {
1052
+ key: "submitScanOrder",
1053
+ value: function () {
1054
+ var _submitScanOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13(params) {
1055
+ var url, query, fetchUrl;
1056
+ return _regeneratorRuntime().wrap(function _callee13$(_context13) {
1057
+ while (1) switch (_context13.prev = _context13.next) {
1058
+ case 0:
1059
+ url = params.url, query = params.query;
1060
+ fetchUrl = url || '/order/sales/checkout';
1061
+ return _context13.abrupt("return", this.request.post(fetchUrl, query));
1062
+ case 3:
1063
+ case "end":
1064
+ return _context13.stop();
1065
+ }
1066
+ }, _callee13, this);
1067
+ }));
1068
+ function submitScanOrder(_x13) {
1069
+ return _submitScanOrder.apply(this, arguments);
1070
+ }
1071
+ return submitScanOrder;
1072
+ }()
1073
+ }, {
1074
+ key: "scanOrderMore",
1075
+ value: function () {
1076
+ var _scanOrderMore = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee14(params) {
1077
+ var url, query, fetchUrl, requestBody;
1078
+ return _regeneratorRuntime().wrap(function _callee14$(_context14) {
1079
+ while (1) switch (_context14.prev = _context14.next) {
1080
+ case 0:
1081
+ url = params.url, query = params.query;
1082
+ fetchUrl = url || "/order/order/product/".concat(query.order_id);
1083
+ requestBody = {
1084
+ products: query.products,
1085
+ request_unique_idempotency_token: query.request_unique_idempotency_token
1086
+ };
1087
+ return _context14.abrupt("return", this.request.put(fetchUrl, requestBody));
1088
+ case 4:
1089
+ case "end":
1090
+ return _context14.stop();
1091
+ }
1092
+ }, _callee14, this);
1093
+ }));
1094
+ function scanOrderMore(_x14) {
1095
+ return _scanOrderMore.apply(this, arguments);
1096
+ }
1097
+ return scanOrderMore;
1098
+ }()
1099
+ }], [{
1100
+ key: "populateSavedAmounts",
1101
+ value:
1102
+ /**
1103
+ * Populate `savedAmount` on each discount based on product-level discount details.
1104
+ * Only selected discounts get a non-zero value.
1105
+ */
1106
+ function populateSavedAmounts(productList, discountList) {
1107
+ var savedMap = new Map();
1108
+ var _iterator = _createForOfIteratorHelper(productList),
1109
+ _step;
1110
+ try {
1111
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
1112
+ var product = _step.value;
1113
+ var qty = product.num || 1;
1114
+ var _iterator3 = _createForOfIteratorHelper(product.discount_list || []),
1115
+ _step3;
1116
+ try {
1117
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
1118
+ var _pd$discount, _pd$metadata;
1119
+ var pd = _step3.value;
1120
+ var discountKey = ((_pd$discount = pd.discount) === null || _pd$discount === void 0 ? void 0 : _pd$discount.resource_id) || pd.id;
1121
+ if (discountKey == null) continue;
1122
+ var amount = new Decimal(pd.amount || 0).times(qty).plus(((_pd$metadata = pd.metadata) === null || _pd$metadata === void 0 ? void 0 : _pd$metadata.product_discount_difference) || 0);
1123
+ savedMap.set(discountKey, (savedMap.get(discountKey) || new Decimal(0)).plus(amount));
1124
+ }
1125
+ } catch (err) {
1126
+ _iterator3.e(err);
1127
+ } finally {
1128
+ _iterator3.f();
1129
+ }
1130
+ }
1131
+ } catch (err) {
1132
+ _iterator.e(err);
1133
+ } finally {
1134
+ _iterator.f();
1135
+ }
1136
+ var _iterator2 = _createForOfIteratorHelper(discountList),
1137
+ _step2;
1138
+ try {
1139
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1140
+ var d = _step2.value;
1141
+ var key = d.id;
1142
+ d.savedAmount = d.isSelected && key != null && savedMap.has(key) ? savedMap.get(key).toNumber() : 0;
1143
+ }
1144
+ } catch (err) {
1145
+ _iterator2.e(err);
1146
+ } finally {
1147
+ _iterator2.f();
1148
+ }
1149
+ }
383
1150
  }]);
384
1151
  return OrderModule;
385
1152
  }(BaseModule);