@pisell/pisellos 2.3.73 → 2.3.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/dist/core/index.d.ts +7 -0
  2. package/dist/core/index.js +111 -71
  3. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  4. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  5. package/dist/model/strategy/strategy-example.js +5 -19
  6. package/dist/modules/Cart/index.js +0 -3
  7. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  8. package/dist/modules/Date/index.js +1 -5
  9. package/dist/modules/Discount/index.js +2 -4
  10. package/dist/modules/OpenData/index.js +0 -2
  11. package/dist/modules/Order/index.d.ts +1 -1
  12. package/dist/modules/Order/index.js +36 -64
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Quotation/index.d.ts +6 -0
  15. package/dist/modules/Quotation/index.js +75 -19
  16. package/dist/modules/Rules/index.js +1 -4
  17. package/dist/modules/Schedule/index.js +0 -1
  18. package/dist/modules/Schedule/utils.js +0 -1
  19. package/dist/modules/Step/index.js +0 -1
  20. package/dist/plugins/request.d.ts +1 -0
  21. package/dist/plugins/request.js +1 -4
  22. package/dist/plugins/window.js +2 -6
  23. package/dist/server/index.d.ts +8 -2
  24. package/dist/server/index.js +303 -269
  25. package/dist/server/modules/floor-plan/index.d.ts +4 -0
  26. package/dist/server/modules/floor-plan/index.js +240 -98
  27. package/dist/server/modules/menu/index.js +75 -59
  28. package/dist/server/modules/order/index.d.ts +17 -7
  29. package/dist/server/modules/order/index.js +421 -211
  30. package/dist/server/modules/products/index.d.ts +8 -2
  31. package/dist/server/modules/products/index.js +191 -117
  32. package/dist/server/modules/quotation/index.js +29 -38
  33. package/dist/server/modules/resource/index.js +24 -17
  34. package/dist/server/modules/schedule/index.js +27 -35
  35. package/dist/server/utils/product.js +0 -1
  36. package/dist/solution/BaseSales/index.js +38 -41
  37. package/dist/solution/BookingByStep/index.d.ts +1 -1
  38. package/dist/solution/BookingByStep/index.js +7 -59
  39. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  40. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  41. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  42. package/dist/solution/BookingTicket/index.js +0 -2
  43. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  44. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  45. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  46. package/dist/solution/BuyTickets/index.js +9 -12
  47. package/dist/solution/Checkout/index.js +177 -252
  48. package/dist/solution/Checkout/utils/index.js +4 -16
  49. package/dist/solution/RegisterAndLogin/index.js +30 -76
  50. package/dist/solution/ScanOrder/index.js +50 -60
  51. package/dist/solution/ShopDiscount/index.js +2 -7
  52. package/dist/solution/VenueBooking/index.js +45 -55
  53. package/dist/utils/task.js +15 -18
  54. package/dist/utils/watch.js +0 -1
  55. package/lib/apis/picoding.js +2 -0
  56. package/lib/core/index.d.ts +7 -0
  57. package/lib/core/index.js +149 -131
  58. package/lib/effects/index.js +46 -57
  59. package/lib/index.js +82 -49
  60. package/lib/model/index.js +14 -21
  61. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  62. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  63. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  64. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  65. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  66. package/lib/model/strategy/adapter/index.js +100 -64
  67. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  68. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  69. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  70. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  71. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  72. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  73. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  74. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  75. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  76. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  77. package/lib/model/strategy/adapter/type.js +4 -16
  78. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  79. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  80. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  81. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  82. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  83. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  84. package/lib/model/strategy/engine.js +270 -168
  85. package/lib/model/strategy/index.js +49 -34
  86. package/lib/model/strategy/strategy-example.js +243 -239
  87. package/lib/model/strategy/type.js +100 -40
  88. package/lib/modules/Account/index.js +39 -53
  89. package/lib/modules/Account/types.js +20 -33
  90. package/lib/modules/AccountList/index.js +116 -154
  91. package/lib/modules/AccountList/types.js +30 -31
  92. package/lib/modules/AccountList/utils.js +18 -30
  93. package/lib/modules/BaseModule.js +23 -42
  94. package/lib/modules/BookingContext/index.js +158 -136
  95. package/lib/modules/BookingContext/types.js +46 -32
  96. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  97. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  98. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  99. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  100. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  101. package/lib/modules/BookingContext/utils/index.js +124 -41
  102. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  103. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  104. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  105. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  106. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  107. package/lib/modules/BookingContext/utils/resources.js +209 -167
  108. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  109. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  110. package/lib/modules/Cart/index.js +170 -124
  111. package/lib/modules/Cart/types.js +46 -51
  112. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  113. package/lib/modules/Cart/utils/cartDate.js +56 -61
  114. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  115. package/lib/modules/Cart/utils/cartNote.js +27 -32
  116. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  117. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  118. package/lib/modules/Cart/utils/cartResource.js +70 -78
  119. package/lib/modules/Cart/utils/changePrice.js +22 -50
  120. package/lib/modules/Cart/utils/index.js +106 -48
  121. package/lib/modules/Customer/constants.js +13 -34
  122. package/lib/modules/Customer/index.js +235 -172
  123. package/lib/modules/Customer/types.js +38 -35
  124. package/lib/modules/Date/index.js +116 -115
  125. package/lib/modules/Date/types.js +16 -28
  126. package/lib/modules/Date/utils.js +174 -123
  127. package/lib/modules/Discount/index.js +122 -127
  128. package/lib/modules/Discount/types.js +9 -31
  129. package/lib/modules/Guests/index.js +30 -56
  130. package/lib/modules/Guests/types.js +23 -33
  131. package/lib/modules/Holder/index.js +209 -189
  132. package/lib/modules/Holder/types.js +4 -16
  133. package/lib/modules/Holder/utils.js +20 -49
  134. package/lib/modules/OpenData/index.js +70 -76
  135. package/lib/modules/OpenData/types.js +4 -16
  136. package/lib/modules/OpenData/utils.js +44 -78
  137. package/lib/modules/Order/index.d.ts +1 -1
  138. package/lib/modules/Order/index.js +1713 -2118
  139. package/lib/modules/Order/payment-utils.js +77 -120
  140. package/lib/modules/Order/types.js +88 -35
  141. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  142. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  143. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  144. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  145. package/lib/modules/Order/utils.js +814 -647
  146. package/lib/modules/Payment/cash.js +20 -33
  147. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  148. package/lib/modules/Payment/eftpos.js +16 -30
  149. package/lib/modules/Payment/index.js +532 -399
  150. package/lib/modules/Payment/mx51.js +1 -0
  151. package/lib/modules/Payment/types.js +230 -108
  152. package/lib/modules/Payment/utils.js +52 -51
  153. package/lib/modules/Payment/walletpass.js +485 -660
  154. package/lib/modules/Product/index.js +51 -46
  155. package/lib/modules/Product/types.js +4 -16
  156. package/lib/modules/Product/utils.js +32 -33
  157. package/lib/modules/ProductList/index.js +113 -123
  158. package/lib/modules/ProductList/types.js +9 -31
  159. package/lib/modules/Quotation/index.d.ts +6 -0
  160. package/lib/modules/Quotation/index.js +110 -103
  161. package/lib/modules/Quotation/types.js +4 -16
  162. package/lib/modules/Resource/index.js +27 -59
  163. package/lib/modules/Resource/types.js +22 -32
  164. package/lib/modules/Resource/utils.js +30 -38
  165. package/lib/modules/ResourcePlanner/index.js +25 -23
  166. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  167. package/lib/modules/ResourcePlanner/planner.js +589 -770
  168. package/lib/modules/ResourcePlanner/types.js +10 -29
  169. package/lib/modules/Rules/index.js +1218 -959
  170. package/lib/modules/Rules/types.js +17 -40
  171. package/lib/modules/SalesSummary/index.js +85 -90
  172. package/lib/modules/SalesSummary/types.js +4 -16
  173. package/lib/modules/SalesSummary/utils.js +355 -430
  174. package/lib/modules/ScanOrderLogger/index.js +59 -79
  175. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  176. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  177. package/lib/modules/ScanOrderLogger/types.js +4 -16
  178. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  179. package/lib/modules/Schedule/index.js +100 -114
  180. package/lib/modules/Schedule/type.js +4 -16
  181. package/lib/modules/Schedule/types.js +4 -16
  182. package/lib/modules/Schedule/utils.js +433 -291
  183. package/lib/modules/Step/index.js +40 -52
  184. package/lib/modules/Step/tyeps.js +4 -16
  185. package/lib/modules/Summary/index.js +66 -71
  186. package/lib/modules/Summary/types.js +4 -16
  187. package/lib/modules/Summary/utils.js +773 -418
  188. package/lib/modules/SurchargeList/index.js +46 -60
  189. package/lib/modules/SurchargeList/types.js +4 -16
  190. package/lib/modules/index.js +245 -63
  191. package/lib/plugins/app.js +4 -16
  192. package/lib/plugins/index.js +36 -25
  193. package/lib/plugins/request.d.ts +1 -0
  194. package/lib/plugins/request.js +137 -126
  195. package/lib/plugins/shopStore.js +4 -16
  196. package/lib/plugins/user.js +4 -16
  197. package/lib/plugins/window.js +171 -179
  198. package/lib/server/index.d.ts +8 -2
  199. package/lib/server/index.js +3083 -2663
  200. package/lib/server/modules/floor-plan/index.d.ts +4 -0
  201. package/lib/server/modules/floor-plan/index.js +159 -127
  202. package/lib/server/modules/floor-plan/types.js +15 -30
  203. package/lib/server/modules/index.js +106 -68
  204. package/lib/server/modules/menu/index.js +170 -124
  205. package/lib/server/modules/menu/types.js +18 -31
  206. package/lib/server/modules/order/index.d.ts +17 -7
  207. package/lib/server/modules/order/index.js +916 -977
  208. package/lib/server/modules/order/types.js +122 -33
  209. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  210. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  211. package/lib/server/modules/payment/index.js +59 -83
  212. package/lib/server/modules/payment/types.js +4 -16
  213. package/lib/server/modules/products/index.d.ts +8 -2
  214. package/lib/server/modules/products/index.js +656 -471
  215. package/lib/server/modules/products/types.js +44 -34
  216. package/lib/server/modules/quotation/index.js +137 -172
  217. package/lib/server/modules/quotation/types.js +21 -31
  218. package/lib/server/modules/resource/index.js +225 -186
  219. package/lib/server/modules/resource/types.js +42 -33
  220. package/lib/server/modules/schedule/index.js +135 -123
  221. package/lib/server/modules/schedule/types.js +14 -21
  222. package/lib/server/modules/schedule/utils.js +334 -163
  223. package/lib/server/types.js +4 -16
  224. package/lib/server/utils/index.js +25 -23
  225. package/lib/server/utils/product.js +196 -139
  226. package/lib/server/utils/schedule.js +34 -41
  227. package/lib/server/utils/small-ticket.js +479 -456
  228. package/lib/server/utils/time.js +40 -49
  229. package/lib/solution/BaseSales/index.js +1186 -1410
  230. package/lib/solution/BaseSales/types.js +42 -38
  231. package/lib/solution/BaseSales/utils/cartPromotion.js +642 -498
  232. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  233. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  234. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  235. package/lib/solution/BaseSales/utils.js +158 -143
  236. package/lib/solution/BookingByStep/index.d.ts +1 -1
  237. package/lib/solution/BookingByStep/index.js +1527 -1340
  238. package/lib/solution/BookingByStep/types.js +40 -99
  239. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  240. package/lib/solution/BookingByStep/utils/products.js +42 -52
  241. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  242. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  243. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  244. package/lib/solution/BookingTicket/index.js +607 -522
  245. package/lib/solution/BookingTicket/types.js +99 -77
  246. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  247. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  248. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  249. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  250. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  251. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  252. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  253. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  254. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  255. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  256. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  257. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  258. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  259. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  260. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  261. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  262. package/lib/solution/BuyTickets/index.js +67 -70
  263. package/lib/solution/BuyTickets/types.js +22 -38
  264. package/lib/solution/Checkout/index.js +1451 -1158
  265. package/lib/solution/Checkout/types.js +91 -61
  266. package/lib/solution/Checkout/utils/index.js +228 -156
  267. package/lib/solution/PlaceOrder/index.js +55 -0
  268. package/lib/solution/RegisterAndLogin/config.js +493 -460
  269. package/lib/solution/RegisterAndLogin/index.js +633 -630
  270. package/lib/solution/RegisterAndLogin/types.js +189 -76
  271. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  272. package/lib/solution/Sales/index.js +328 -324
  273. package/lib/solution/Sales/types.js +27 -33
  274. package/lib/solution/ScanOrder/index.js +832 -864
  275. package/lib/solution/ScanOrder/types.js +33 -34
  276. package/lib/solution/ScanOrder/utils.js +409 -374
  277. package/lib/solution/ShopDiscount/index.js +226 -232
  278. package/lib/solution/ShopDiscount/types.js +15 -37
  279. package/lib/solution/ShopDiscount/utils.js +300 -172
  280. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  281. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  282. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  283. package/lib/solution/VenueBooking/index.js +811 -879
  284. package/lib/solution/VenueBooking/types.js +19 -39
  285. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  286. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  287. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  288. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  289. package/lib/solution/VenueBooking/utils.js +130 -67
  290. package/lib/solution/index.js +124 -41
  291. package/lib/store/createStore.js +32 -29
  292. package/lib/types/index.js +4 -16
  293. package/lib/utils/payment-number.js +26 -46
  294. package/lib/utils/task.js +36 -36
  295. package/lib/utils/watch.js +81 -47
  296. package/package.json +2 -1
@@ -1,79 +1,77 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/modules/Quotation/index.ts
20
- var Quotation_exports = {};
21
- __export(Quotation_exports, {
22
- QuotationModule: () => QuotationModule
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(Quotation_exports);
25
- var import_BaseModule = require("../BaseModule");
26
- var import_getDateIsInSchedule = require("../Schedule/getDateIsInSchedule");
27
- var QuotationModule = class extends import_BaseModule.BaseModule {
6
+ exports.QuotationModule = void 0;
7
+ var _BaseModule = require("../BaseModule");
8
+ var _getDateIsInSchedule = require("../Schedule/getDateIsInSchedule");
9
+ class QuotationModule extends _BaseModule.BaseModule {
10
+ defaultName = 'quotation';
11
+ defaultVersion = '1.0.0';
12
+ request;
13
+ store = {
14
+ list: []
15
+ };
16
+ scheduleResolver;
17
+ app;
18
+ quotationListUpdatedListener;
28
19
  constructor(name, version) {
29
20
  super(name, version);
30
- this.defaultName = "quotation";
31
- this.defaultVersion = "1.0.0";
32
- this.store = { list: [] };
33
21
  }
34
22
  async initialize(core, options) {
35
23
  this.core = core;
36
- this.request = core.getPlugin("request");
37
- if (!this.request)
38
- throw new Error("QuotationModule 需要 request 插件支持");
39
- this.store = { list: [] };
24
+ this.request = core.getPlugin('request');
25
+ if (!this.request) throw new Error('QuotationModule 需要 request 插件支持');
26
+ this.app = core.getPlugin('app')?.getApp?.();
27
+ this.store = {
28
+ list: []
29
+ };
40
30
  }
41
31
  async loadQuotations(params) {
42
- var _a;
43
32
  const query = {};
44
- if (params == null ? void 0 : params.channel)
45
- query.channel = params.channel;
46
- if ((params == null ? void 0 : params.channel) === "online_store") {
47
- query.channel = "online-store";
33
+ if (params?.channel) query.channel = params.channel;
34
+ if (params?.channel === 'online_store') {
35
+ query.channel = 'online-store';
48
36
  }
49
- const res = await this.request.get(
50
- "/quotation/available",
51
- query,
52
- { useCache: false, osServer: true }
53
- );
54
- const list = ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.list) || (res == null ? void 0 : res.list) || [];
55
- list.sort((a, b) => b.sort - a.sort);
56
- this.store.list = list;
37
+ let initialResultApplied = false;
38
+ const applyRemoteUpdate = response => {
39
+ this.applyQuotationResponse(response);
40
+ if (initialResultApplied) {
41
+ this.notifyQuotationListUpdated();
42
+ }
43
+ };
44
+ const res = await this.request.get('/quotation/available', query, {
45
+ cache: {
46
+ type: 'indexDB',
47
+ updateCache: true,
48
+ cacheKeyData: this.getQuotationCacheKeyData(query)
49
+ },
50
+ cacheUpdateChange: applyRemoteUpdate
51
+ });
52
+ this.applyQuotationResponse(res);
53
+ initialResultApplied = true;
57
54
  }
58
55
  getQuotationList() {
59
56
  return this.store.list;
60
57
  }
58
+ setQuotationListUpdatedListener(listener) {
59
+ this.quotationListUpdatedListener = listener;
60
+ }
61
61
  getQuotationCustomerScopeInfo() {
62
- const customerById = /* @__PURE__ */ new Map();
63
- const quotationScopes = this.store.list.filter((quotation) => Array.isArray(quotation.customer) && quotation.customer.length > 0).map((quotation) => {
62
+ const customerById = new Map();
63
+ const quotationScopes = this.store.list.filter(quotation => Array.isArray(quotation.customer) && quotation.customer.length > 0).map(quotation => {
64
64
  const customerIds = [];
65
65
  const customers = [];
66
- const localSeen = /* @__PURE__ */ new Set();
66
+ const localSeen = new Set();
67
67
  const quotationCustomers = quotation.customer || [];
68
- quotationCustomers.forEach((customer) => {
69
- const customerId = this.normalizeCustomerId(customer == null ? void 0 : customer.id);
70
- if (!customerId || localSeen.has(customerId))
71
- return;
68
+ quotationCustomers.forEach(customer => {
69
+ const customerId = this.normalizeCustomerId(customer?.id);
70
+ if (!customerId || localSeen.has(customerId)) return;
72
71
  localSeen.add(customerId);
73
72
  customerIds.push(customerId);
74
73
  customers.push(customer);
75
- if (!customerById.has(customerId))
76
- customerById.set(customerId, customer);
74
+ if (!customerById.has(customerId)) customerById.set(customerId, customer);
77
75
  });
78
76
  return {
79
77
  quotationId: quotation.id,
@@ -92,6 +90,7 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
92
90
  };
93
91
  return result;
94
92
  }
93
+
95
94
  /**
96
95
  * Look up the quotation price for a specific product (+ optional variant) at a given datetime.
97
96
  * Returns the price as a string (e.g. "300.00"), or null if no quotation applies.
@@ -101,23 +100,23 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
101
100
  * the requested productId wins.
102
101
  */
103
102
  getPriceForProduct(params) {
104
- var _a;
105
- return ((_a = this.getQuotationMatchForProduct(params)) == null ? void 0 : _a.price) ?? null;
103
+ return this.getQuotationMatchForProduct(params)?.price ?? null;
106
104
  }
107
105
  getQuotationMatchForProduct(params) {
108
- const { productId, variantId, datetime, customer_id } = params;
106
+ const {
107
+ productId,
108
+ variantId,
109
+ datetime,
110
+ customer_id
111
+ } = params;
109
112
  for (const quotation of this.store.list) {
110
113
  const visible = this.isQuotationVisibleForCustomer(quotation, customer_id);
111
- if (!visible)
112
- continue;
114
+ if (!visible) continue;
113
115
  const active = this.isQuotationActiveAt(quotation, datetime);
114
- if (!active)
115
- continue;
116
+ if (!active) continue;
116
117
  const match = this.findProductData(quotation.product_data, productId, variantId);
117
- if (!match)
118
- continue;
119
- if (match.value === 0)
120
- continue;
118
+ if (!match) continue;
119
+ if (match.value === 0) continue;
121
120
  return {
122
121
  price: String(match.value),
123
122
  quotationShelfId: quotation.id
@@ -126,18 +125,17 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
126
125
  return null;
127
126
  }
128
127
  getQuotationShelfId(params) {
129
- var _a;
130
- return ((_a = this.getQuotationMatchForProduct(params)) == null ? void 0 : _a.quotationShelfId) ?? 0;
128
+ return this.getQuotationMatchForProduct(params)?.quotationShelfId ?? 0;
131
129
  }
130
+
132
131
  /**
133
132
  * Batch pre-compute quotation prices for a set of products across multiple time points.
134
133
  * Key format: `${productId}:${timePoint}`
135
134
  * This avoids repeated schedule matching when the same product appears in multiple resource rows.
136
135
  */
137
136
  buildProductPriceMap(params) {
138
- const map = /* @__PURE__ */ new Map();
139
- if (!this.store.list.length)
140
- return map;
137
+ const map = new Map();
138
+ if (!this.store.list.length) return map;
141
139
  for (const productId of params.productIds) {
142
140
  for (const timePoint of params.timePoints) {
143
141
  const key = `${productId}:${timePoint}`;
@@ -156,32 +154,50 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
156
154
  setScheduleResolver(resolver) {
157
155
  this.scheduleResolver = resolver;
158
156
  }
157
+ applyQuotationResponse(response) {
158
+ const source = response?.data?.list || response?.list || [];
159
+ this.store.list = [...source].sort((a, b) => Number(b.sort || 0) - Number(a.sort || 0));
160
+ }
161
+ notifyQuotationListUpdated() {
162
+ try {
163
+ this.quotationListUpdatedListener?.();
164
+ } catch (error) {
165
+ console.warn('[QuotationModule] 报价单后台更新回调失败', error);
166
+ }
167
+ }
168
+ getQuotationCacheKeyData(query) {
169
+ let shopId = '';
170
+ try {
171
+ const storedCore = this.app?.storage?.getStorage?.('core');
172
+ const coreInfo = typeof storedCore === 'string' ? JSON.parse(storedCore || '{}') : storedCore || {};
173
+ shopId = String(coreInfo?.id || '');
174
+ } catch {
175
+ // 缓存隔离信息读取失败时仍按请求参数缓存。
176
+ }
177
+ return {
178
+ ...query,
179
+ shop_id: shopId
180
+ };
181
+ }
159
182
  isQuotationVisibleForCustomer(quotation, customerId) {
160
183
  const customers = quotation.customer || [];
161
- if (customers.length === 0)
162
- return true;
163
- if (!this.hasValidCustomerId(customerId))
164
- return false;
165
- return customers.some((customer) => String(customer.id) === String(customerId));
184
+ if (customers.length === 0) return true;
185
+ if (!this.hasValidCustomerId(customerId)) return false;
186
+ return customers.some(customer => String(customer.id) === String(customerId));
166
187
  }
167
188
  hasValidCustomerId(customerId) {
168
- if (customerId === void 0 || customerId === null || customerId === "")
169
- return false;
189
+ if (customerId === undefined || customerId === null || customerId === '') return false;
170
190
  return Number(customerId) > 0;
171
191
  }
172
192
  normalizeCustomerId(customerId) {
173
- if (customerId === void 0 || customerId === null || customerId === "")
174
- return null;
193
+ if (customerId === undefined || customerId === null || customerId === '') return null;
175
194
  return String(customerId);
176
195
  }
177
196
  isQuotationActiveAt(quotation, datetime) {
178
- var _a;
179
- if (!((_a = quotation.schedule) == null ? void 0 : _a.length))
180
- return false;
197
+ if (!quotation.schedule?.length) return false;
181
198
  const scheduleItems = [];
182
- quotation.schedule.forEach((s) => {
183
- var _a2;
184
- const full = (_a2 = this.scheduleResolver) == null ? void 0 : _a2.call(this, s.id);
199
+ quotation.schedule.forEach(s => {
200
+ const full = this.scheduleResolver?.(s.id);
185
201
  if (full) {
186
202
  scheduleItems.push(full);
187
203
  return;
@@ -191,30 +207,21 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
191
207
  }
192
208
  const fallbackSchedule = {
193
209
  ...s,
194
- repeat_type: s.repeat_type || "none",
210
+ repeat_type: s.repeat_type || 'none',
195
211
  repeat_rule: s.repeat_rule || null,
196
212
  time_slot: s.time_slot || []
197
213
  };
198
214
  scheduleItems.push(fallbackSchedule);
199
215
  });
200
- if (!scheduleItems.length)
201
- return false;
202
- return (0, import_getDateIsInSchedule.getDateIsInSchedule)(datetime, scheduleItems);
216
+ if (!scheduleItems.length) return false;
217
+ return (0, _getDateIsInSchedule.getDateIsInSchedule)(datetime, scheduleItems);
203
218
  }
204
219
  findProductData(productData, productId, variantId) {
205
220
  if (variantId && variantId !== 0) {
206
- const variantMatch = productData.find(
207
- (p) => p.product_id === productId && p.variant_id === variantId
208
- );
209
- if (variantMatch)
210
- return variantMatch;
221
+ const variantMatch = productData.find(p => p.product_id === productId && p.variant_id === variantId);
222
+ if (variantMatch) return variantMatch;
211
223
  }
212
- return productData.find(
213
- (p) => p.product_id === productId && p.variant_id === 0
214
- );
215
- }
216
- };
217
- // Annotate the CommonJS export names for ESM import in node:
218
- 0 && (module.exports = {
219
- QuotationModule
220
- });
224
+ return productData.find(p => p.product_id === productId && p.variant_id === 0);
225
+ }
226
+ }
227
+ exports.QuotationModule = QuotationModule;
@@ -1,17 +1,5 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __copyProps = (to, from, except, desc) => {
6
- if (from && typeof from === "object" || typeof from === "function") {
7
- for (let key of __getOwnPropNames(from))
8
- if (!__hasOwnProp.call(to, key) && key !== except)
9
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
- }
11
- return to;
12
- };
13
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
14
2
 
15
- // src/modules/Quotation/types.ts
16
- var types_exports = {};
17
- module.exports = __toCommonJS(types_exports);
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -1,34 +1,17 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/modules/Resource/index.ts
20
- var Resource_exports = {};
21
- __export(Resource_exports, {
22
- ResourceListModule: () => ResourceListModule
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(Resource_exports);
25
- var import_BaseModule = require("../BaseModule");
26
- var import_types = require("./types");
27
- var ResourceListModule = class extends import_BaseModule.BaseModule {
6
+ exports.ResourceListModule = void 0;
7
+ var _BaseModule = require("../BaseModule");
8
+ var _types = require("./types");
9
+ class ResourceListModule extends _BaseModule.BaseModule {
10
+ defaultName = 'resourceList';
11
+ defaultVersion = '1.0.0';
12
+ store;
28
13
  constructor(name, version) {
29
14
  super(name, version);
30
- this.defaultName = "resourceList";
31
- this.defaultVersion = "1.0.0";
32
15
  }
33
16
  async initialize(core, options) {
34
17
  this.core = core;
@@ -38,9 +21,8 @@ var ResourceListModule = class extends import_BaseModule.BaseModule {
38
21
  return this.store.list;
39
22
  }
40
23
  async selectResource(resourceId) {
41
- const resource = this.store.list.find((r) => r.id === resourceId);
42
- if (!resource)
43
- return;
24
+ const resource = this.store.list.find(r => r.id === resourceId);
25
+ if (!resource) return;
44
26
  this.store.selectedResource = resource;
45
27
  await this.core.effects.emit(`${this.name}:onResourceSelect`, resource);
46
28
  }
@@ -48,43 +30,29 @@ var ResourceListModule = class extends import_BaseModule.BaseModule {
48
30
  return this.store.selectedResource;
49
31
  }
50
32
  async checkAvailability(resourceId, start, end) {
51
- const resource = this.store.list.find((r) => r.id === resourceId);
52
- if (!resource)
53
- return false;
54
- return resource.timeSlots.some(
55
- (slot) => slot.start.getTime() <= start.getTime() && slot.end.getTime() >= end.getTime() && slot.availableCapacity > 0
56
- );
33
+ const resource = this.store.list.find(r => r.id === resourceId);
34
+ if (!resource) return false;
35
+ return resource.timeSlots.some(slot => slot.start.getTime() <= start.getTime() && slot.end.getTime() >= end.getTime() && slot.availableCapacity > 0);
57
36
  }
58
37
  async getAvailableTimeSlots(resourceId) {
59
- const resource = this.store.list.find((r) => r.id === resourceId);
60
- if (!resource)
61
- return [];
62
- return resource.timeSlots.filter((slot) => slot.availableCapacity > 0);
38
+ const resource = this.store.list.find(r => r.id === resourceId);
39
+ if (!resource) return [];
40
+ return resource.timeSlots.filter(slot => slot.availableCapacity > 0);
63
41
  }
64
42
  getAvailableCapacity(resourceId, timeSlot) {
65
- const resource = this.store.list.find((r) => r.id === resourceId);
66
- if (!resource)
67
- return 0;
68
- const slot = resource.timeSlots.find(
69
- (s) => s.start.getTime() === timeSlot.start.getTime() && s.end.getTime() === timeSlot.end.getTime()
70
- );
71
- return (slot == null ? void 0 : slot.availableCapacity) || 0;
43
+ const resource = this.store.list.find(r => r.id === resourceId);
44
+ if (!resource) return 0;
45
+ const slot = resource.timeSlots.find(s => s.start.getTime() === timeSlot.start.getTime() && s.end.getTime() === timeSlot.end.getTime());
46
+ return slot?.availableCapacity || 0;
72
47
  }
73
48
  async updateResource(resourceId, updates) {
74
- const index = this.store.list.findIndex((r) => r.id === resourceId);
75
- if (index === -1)
76
- return;
49
+ const index = this.store.list.findIndex(r => r.id === resourceId);
50
+ if (index === -1) return;
77
51
  this.store.list[index] = {
78
52
  ...this.store.list[index],
79
53
  ...updates
80
54
  };
81
- await this.core.effects.emit(
82
- import_types.ResourceHooks.OnResourceChange,
83
- this.store.list[index]
84
- );
55
+ await this.core.effects.emit(_types.ResourceHooks.OnResourceChange, this.store.list[index]);
85
56
  }
86
- };
87
- // Annotate the CommonJS export names for ESM import in node:
88
- 0 && (module.exports = {
89
- ResourceListModule
90
- });
57
+ }
58
+ exports.ResourceListModule = ResourceListModule;
@@ -1,34 +1,24 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/modules/Resource/types.ts
20
- var types_exports = {};
21
- __export(types_exports, {
22
- ResourceHooks: () => ResourceHooks
23
- });
24
- module.exports = __toCommonJS(types_exports);
25
- var ResourceHooks = /* @__PURE__ */ ((ResourceHooks2) => {
26
- ResourceHooks2["OnResourceSelect"] = "resource:onResourceSelect";
27
- ResourceHooks2["OnResourceChange"] = "resource:onResourceChange";
28
- ResourceHooks2["OnAvailabilityCheck"] = "resource:onAvailabilityCheck";
29
- return ResourceHooks2;
30
- })(ResourceHooks || {});
31
- // Annotate the CommonJS export names for ESM import in node:
32
- 0 && (module.exports = {
33
- ResourceHooks
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
34
5
  });
6
+ exports.ResourceHooks = void 0;
7
+ let ResourceHooks = exports.ResourceHooks = /*#__PURE__*/function (ResourceHooks) {
8
+ ResourceHooks["OnResourceSelect"] = "resource:onResourceSelect";
9
+ ResourceHooks["OnResourceChange"] = "resource:onResourceChange";
10
+ ResourceHooks["OnAvailabilityCheck"] = "resource:onAvailabilityCheck";
11
+ return ResourceHooks;
12
+ }({});
13
+ /**
14
+ * 资源可用时间段
15
+ */
16
+ /**
17
+ * 资源信息
18
+ */
19
+ /**
20
+ * 资源列表状态
21
+ */
22
+ /**
23
+ * 资源列表模块 API
24
+ */
@@ -1,42 +1,34 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/modules/Resource/utils.ts
20
- var utils_exports = {};
21
- __export(utils_exports, {
22
- getResourcesByIds: () => getResourcesByIds,
23
- getResourcesMap: () => getResourcesMap
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
24
5
  });
25
- module.exports = __toCommonJS(utils_exports);
26
- var getResourcesMap = (resourceList) => {
27
- return resourceList.reduce(
28
- (pre, item) => {
29
- pre[item.id] = item;
30
- return pre;
31
- },
32
- {}
33
- );
6
+ exports.getResourcesMap = exports.getResourcesByIds = void 0;
7
+ /**
8
+ * @title: 获取资源map
9
+ * @description:
10
+ * @param {any} resourceList
11
+ * @return {*}
12
+ * @Author: zhiwei.Wang
13
+ */
14
+ const getResourcesMap = resourceList => {
15
+ return resourceList.reduce((pre, item) => {
16
+ pre[item.id] = item;
17
+ return pre;
18
+ }, {});
34
19
  };
35
- var getResourcesByIds = (resourcesMap, ids) => {
36
- return (ids || []).map((id) => resourcesMap[id]);
20
+
21
+ /**
22
+ * @title: 根据ids筛选资源列表
23
+ * @description:
24
+ * @param {any} resourcesMap
25
+ * @param {any} ids
26
+ * @return {*}
27
+ * @Author: zhiwei.Wang
28
+ * @Date: 2024-09-19 20:23
29
+ */
30
+ exports.getResourcesMap = getResourcesMap;
31
+ const getResourcesByIds = (resourcesMap, ids) => {
32
+ return (ids || []).map(id => resourcesMap[id]);
37
33
  };
38
- // Annotate the CommonJS export names for ESM import in node:
39
- 0 && (module.exports = {
40
- getResourcesByIds,
41
- getResourcesMap
42
- });
34
+ exports.getResourcesByIds = getResourcesByIds;
@@ -1,25 +1,27 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __copyProps = (to, from, except, desc) => {
6
- if (from && typeof from === "object" || typeof from === "function") {
7
- for (let key of __getOwnPropNames(from))
8
- if (!__hasOwnProp.call(to, key) && key !== except)
9
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
- }
11
- return to;
12
- };
13
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
14
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
15
2
 
16
- // src/modules/ResourcePlanner/index.ts
17
- var ResourcePlanner_exports = {};
18
- module.exports = __toCommonJS(ResourcePlanner_exports);
19
- __reExport(ResourcePlanner_exports, require("./types"), module.exports);
20
- __reExport(ResourcePlanner_exports, require("./planner"), module.exports);
21
- // Annotate the CommonJS export names for ESM import in node:
22
- 0 && (module.exports = {
23
- ...require("./types"),
24
- ...require("./planner")
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
25
5
  });
6
+ var _types = require("./types");
7
+ Object.keys(_types).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _types[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _types[key];
14
+ }
15
+ });
16
+ });
17
+ var _planner = require("./planner");
18
+ Object.keys(_planner).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _planner[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _planner[key];
25
+ }
26
+ });
27
+ });