@pisell/pisellos 2.2.283 → 2.2.284
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.
- package/dist/core/index.js +6 -10
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/example.js +3 -26
- package/dist/model/strategy/strategy-example.js +5 -19
- package/dist/modules/Cart/index.js +0 -3
- package/dist/modules/Cart/utils/cartProduct.js +0 -1
- package/dist/modules/Date/index.js +1 -5
- package/dist/modules/Discount/index.js +2 -4
- package/dist/modules/OpenData/index.js +0 -2
- package/dist/modules/Order/index.d.ts +1 -1
- package/dist/modules/Order/index.js +64 -86
- package/dist/modules/Order/types.d.ts +1 -1
- package/dist/modules/Payment/index.js +97 -162
- package/dist/modules/Rules/index.js +1 -4
- package/dist/modules/Schedule/index.js +0 -1
- package/dist/modules/Schedule/utils.js +0 -1
- package/dist/modules/Step/index.js +0 -1
- package/dist/modules/Summary/utils.d.ts +1 -1
- package/dist/plugins/request.js +1 -4
- package/dist/plugins/window.js +2 -6
- package/dist/server/index.js +97 -129
- package/dist/server/modules/menu/index.js +32 -41
- package/dist/server/modules/order/index.js +2 -4
- package/dist/server/modules/products/index.js +24 -42
- package/dist/server/modules/quotation/index.js +29 -38
- package/dist/server/modules/resource/index.js +3 -4
- package/dist/server/modules/schedule/index.js +27 -35
- package/dist/server/utils/product.js +0 -1
- package/dist/solution/BaseSales/index.js +100 -72
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingByStep/index.js +7 -59
- package/dist/solution/BookingByStep/utils/capacity.js +1 -11
- package/dist/solution/BookingByStep/utils/resources.js +1 -3
- package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
- package/dist/solution/BookingTicket/index.d.ts +1 -13
- package/dist/solution/BookingTicket/index.js +0 -2
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
- package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
- package/dist/solution/BuyTickets/index.js +9 -12
- package/dist/solution/Checkout/index.js +177 -252
- package/dist/solution/Checkout/utils/index.js +4 -16
- package/dist/solution/RegisterAndLogin/index.js +30 -76
- package/dist/solution/ScanOrder/index.js +50 -60
- package/dist/solution/ShopDiscount/index.js +2 -7
- package/dist/solution/VenueBooking/index.js +45 -55
- package/dist/utils/task.js +15 -18
- package/dist/utils/watch.js +0 -1
- package/lib/apis/picoding.js +2 -0
- package/lib/core/index.js +131 -132
- package/lib/effects/index.js +46 -57
- package/lib/index.js +82 -49
- package/lib/model/index.js +14 -21
- package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
- package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
- package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
- package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
- package/lib/model/strategy/adapter/index.js +100 -64
- package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
- package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
- package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
- package/lib/model/strategy/adapter/itemRule/index.js +83 -57
- package/lib/model/strategy/adapter/itemRule/type.js +97 -36
- package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
- package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
- package/lib/model/strategy/adapter/promotion/examples.js +222 -234
- package/lib/model/strategy/adapter/promotion/index.js +1 -0
- package/lib/model/strategy/adapter/promotion/type.js +243 -36
- package/lib/model/strategy/adapter/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
- package/lib/model/strategy/adapter/walletPass/example.js +217 -190
- package/lib/model/strategy/adapter/walletPass/index.js +75 -51
- package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
- package/lib/model/strategy/adapter/walletPass/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
- package/lib/model/strategy/engine.js +270 -168
- package/lib/model/strategy/index.js +49 -34
- package/lib/model/strategy/strategy-example.js +243 -239
- package/lib/model/strategy/type.js +100 -40
- package/lib/modules/Account/index.js +39 -53
- package/lib/modules/Account/types.js +20 -33
- package/lib/modules/AccountList/index.js +116 -154
- package/lib/modules/AccountList/types.js +30 -31
- package/lib/modules/AccountList/utils.js +18 -30
- package/lib/modules/BaseModule.js +23 -42
- package/lib/modules/BookingContext/index.js +158 -136
- package/lib/modules/BookingContext/types.js +46 -32
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
- package/lib/modules/BookingContext/utils/flexible.js +38 -55
- package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
- package/lib/modules/BookingContext/utils/index.js +124 -41
- package/lib/modules/BookingContext/utils/noResource.js +58 -70
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
- package/lib/modules/BookingContext/utils/productExtend.js +202 -155
- package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
- package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
- package/lib/modules/BookingContext/utils/resources.js +209 -167
- package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
- package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
- package/lib/modules/Cart/index.js +170 -124
- package/lib/modules/Cart/types.js +46 -51
- package/lib/modules/Cart/utils/cartAccount.js +40 -39
- package/lib/modules/Cart/utils/cartDate.js +56 -61
- package/lib/modules/Cart/utils/cartDiscount.js +28 -33
- package/lib/modules/Cart/utils/cartNote.js +27 -32
- package/lib/modules/Cart/utils/cartProduct.js +321 -251
- package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
- package/lib/modules/Cart/utils/cartResource.js +70 -78
- package/lib/modules/Cart/utils/changePrice.js +22 -50
- package/lib/modules/Cart/utils/index.js +106 -48
- package/lib/modules/Customer/constants.js +13 -34
- package/lib/modules/Customer/index.js +235 -172
- package/lib/modules/Customer/types.js +38 -35
- package/lib/modules/Date/index.js +116 -115
- package/lib/modules/Date/types.js +16 -28
- package/lib/modules/Date/utils.js +174 -123
- package/lib/modules/Discount/index.js +122 -127
- package/lib/modules/Discount/types.js +9 -31
- package/lib/modules/Guests/index.js +30 -56
- package/lib/modules/Guests/types.js +23 -33
- package/lib/modules/Holder/index.js +209 -189
- package/lib/modules/Holder/types.js +4 -16
- package/lib/modules/Holder/utils.js +20 -49
- package/lib/modules/OpenData/index.js +70 -76
- package/lib/modules/OpenData/types.js +4 -16
- package/lib/modules/OpenData/utils.js +44 -78
- package/lib/modules/Order/index.d.ts +1 -1
- package/lib/modules/Order/index.js +1728 -2123
- package/lib/modules/Order/payment-utils.js +77 -120
- package/lib/modules/Order/types.d.ts +1 -1
- package/lib/modules/Order/types.js +87 -35
- package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
- package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
- package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
- package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
- package/lib/modules/Order/utils.js +814 -647
- package/lib/modules/Payment/cash.js +20 -33
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
- package/lib/modules/Payment/eftpos.js +16 -30
- package/lib/modules/Payment/index.js +532 -399
- package/lib/modules/Payment/mx51.js +1 -0
- package/lib/modules/Payment/types.js +230 -108
- package/lib/modules/Payment/utils.js +52 -51
- package/lib/modules/Payment/walletpass.js +485 -660
- package/lib/modules/Product/index.js +51 -46
- package/lib/modules/Product/types.js +4 -16
- package/lib/modules/Product/utils.js +32 -33
- package/lib/modules/ProductList/index.js +113 -123
- package/lib/modules/ProductList/types.js +9 -31
- package/lib/modules/Quotation/index.js +66 -100
- package/lib/modules/Quotation/types.js +4 -16
- package/lib/modules/Resource/index.js +27 -59
- package/lib/modules/Resource/types.js +22 -32
- package/lib/modules/Resource/utils.js +30 -38
- package/lib/modules/ResourcePlanner/index.js +60 -61
- package/lib/modules/ResourcePlanner/planner.js +346 -384
- package/lib/modules/ResourcePlanner/types.js +4 -16
- package/lib/modules/Rules/index.js +1218 -959
- package/lib/modules/Rules/types.js +17 -40
- package/lib/modules/SalesSummary/index.js +85 -90
- package/lib/modules/SalesSummary/types.js +4 -16
- package/lib/modules/SalesSummary/utils.js +355 -430
- package/lib/modules/ScanOrderLogger/index.js +59 -79
- package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
- package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
- package/lib/modules/ScanOrderLogger/types.js +4 -16
- package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
- package/lib/modules/Schedule/index.js +100 -114
- package/lib/modules/Schedule/type.js +4 -16
- package/lib/modules/Schedule/types.js +4 -16
- package/lib/modules/Schedule/utils.js +433 -291
- package/lib/modules/Step/index.js +40 -52
- package/lib/modules/Step/tyeps.js +4 -16
- package/lib/modules/Summary/index.js +66 -71
- package/lib/modules/Summary/types.js +4 -16
- package/lib/modules/Summary/utils.d.ts +1 -1
- package/lib/modules/Summary/utils.js +773 -418
- package/lib/modules/SurchargeList/index.js +46 -60
- package/lib/modules/SurchargeList/types.js +4 -16
- package/lib/modules/index.js +245 -63
- package/lib/plugins/app.js +4 -16
- package/lib/plugins/index.js +36 -25
- package/lib/plugins/request.js +137 -126
- package/lib/plugins/shopStore.js +4 -16
- package/lib/plugins/user.js +4 -16
- package/lib/plugins/window.js +171 -179
- package/lib/server/index.js +3027 -2655
- package/lib/server/modules/floor-plan/index.js +102 -123
- package/lib/server/modules/floor-plan/types.js +15 -30
- package/lib/server/modules/index.js +106 -68
- package/lib/server/modules/menu/index.js +146 -122
- package/lib/server/modules/menu/types.js +18 -31
- package/lib/server/modules/order/index.js +758 -956
- package/lib/server/modules/order/types.js +122 -33
- package/lib/server/modules/order/utils/filterBookings.js +219 -194
- package/lib/server/modules/order/utils/filterOrders.js +118 -92
- package/lib/server/modules/payment/index.js +59 -83
- package/lib/server/modules/payment/types.js +4 -16
- package/lib/server/modules/products/index.js +575 -459
- package/lib/server/modules/products/types.js +44 -34
- package/lib/server/modules/quotation/index.js +137 -172
- package/lib/server/modules/quotation/types.js +21 -31
- package/lib/server/modules/resource/index.js +213 -184
- package/lib/server/modules/resource/types.js +42 -33
- package/lib/server/modules/schedule/index.js +135 -123
- package/lib/server/modules/schedule/types.js +14 -21
- package/lib/server/modules/schedule/utils.js +334 -163
- package/lib/server/types.js +4 -16
- package/lib/server/utils/index.js +25 -23
- package/lib/server/utils/product.js +196 -139
- package/lib/server/utils/schedule.js +34 -41
- package/lib/server/utils/small-ticket.js +479 -456
- package/lib/server/utils/time.js +40 -49
- package/lib/solution/BaseSales/index.js +1209 -1412
- package/lib/solution/BaseSales/types.js +42 -38
- package/lib/solution/BaseSales/utils/cartPromotion.js +650 -502
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
- package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
- package/lib/solution/BaseSales/utils.js +158 -143
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingByStep/index.js +1527 -1340
- package/lib/solution/BookingByStep/types.js +40 -99
- package/lib/solution/BookingByStep/utils/capacity.js +192 -160
- package/lib/solution/BookingByStep/utils/products.js +42 -52
- package/lib/solution/BookingByStep/utils/resources.js +527 -330
- package/lib/solution/BookingByStep/utils/stock.js +65 -44
- package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
- package/lib/solution/BookingTicket/index.d.ts +1 -13
- package/lib/solution/BookingTicket/index.js +594 -514
- package/lib/solution/BookingTicket/types.js +99 -77
- package/lib/solution/BookingTicket/utils/addProductDecision.js +225 -187
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
- package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
- package/lib/solution/BookingTicket/utils/cartView.js +114 -99
- package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
- package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
- package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
- package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
- package/lib/solution/BuyTickets/index.js +67 -70
- package/lib/solution/BuyTickets/types.js +22 -38
- package/lib/solution/Checkout/index.js +1451 -1158
- package/lib/solution/Checkout/types.js +91 -61
- package/lib/solution/Checkout/utils/index.js +228 -156
- package/lib/solution/PlaceOrder/index.js +55 -0
- package/lib/solution/RegisterAndLogin/config.js +493 -460
- package/lib/solution/RegisterAndLogin/index.js +633 -630
- package/lib/solution/RegisterAndLogin/types.js +189 -76
- package/lib/solution/RegisterAndLogin/utils.js +183 -125
- package/lib/solution/Sales/index.js +328 -324
- package/lib/solution/Sales/types.js +27 -33
- package/lib/solution/ScanOrder/index.js +832 -864
- package/lib/solution/ScanOrder/types.js +33 -34
- package/lib/solution/ScanOrder/utils.js +409 -374
- package/lib/solution/ShopDiscount/index.js +226 -232
- package/lib/solution/ShopDiscount/types.js +15 -37
- package/lib/solution/ShopDiscount/utils.js +300 -172
- package/lib/solution/UnifiedBookingSales/index.js +437 -487
- package/lib/solution/UnifiedBookingSales/types.js +12 -31
- package/lib/solution/VenueBooking/index.js +811 -879
- package/lib/solution/VenueBooking/types.js +19 -39
- package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
- package/lib/solution/VenueBooking/utils/resource.js +31 -54
- package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
- package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
- package/lib/solution/VenueBooking/utils.js +130 -67
- package/lib/solution/index.js +124 -41
- package/lib/store/createStore.js +32 -29
- package/lib/types/index.js +4 -16
- package/lib/utils/payment-number.js +26 -46
- package/lib/utils/task.js +36 -36
- package/lib/utils/watch.js +81 -47
- package/package.json +2 -1
|
@@ -1,57 +1,41 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
__export(Quotation_exports, {
|
|
22
|
-
QuotationModule: () => QuotationModule
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
23
5
|
});
|
|
24
|
-
|
|
25
|
-
var
|
|
26
|
-
var
|
|
27
|
-
|
|
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;
|
|
28
17
|
constructor(name, version) {
|
|
29
18
|
super(name, version);
|
|
30
|
-
this.defaultName = "quotation";
|
|
31
|
-
this.defaultVersion = "1.0.0";
|
|
32
|
-
this.store = { list: [] };
|
|
33
19
|
}
|
|
34
20
|
async initialize(core, options) {
|
|
35
21
|
this.core = core;
|
|
36
|
-
this.request = core.getPlugin(
|
|
37
|
-
if (!this.request)
|
|
38
|
-
|
|
39
|
-
|
|
22
|
+
this.request = core.getPlugin('request');
|
|
23
|
+
if (!this.request) throw new Error('QuotationModule 需要 request 插件支持');
|
|
24
|
+
this.store = {
|
|
25
|
+
list: []
|
|
26
|
+
};
|
|
40
27
|
}
|
|
41
28
|
async loadQuotations(params) {
|
|
42
|
-
var _a;
|
|
43
29
|
const query = {};
|
|
44
|
-
if (params
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
query.channel = "online-store";
|
|
30
|
+
if (params?.channel) query.channel = params.channel;
|
|
31
|
+
if (params?.channel === 'online_store') {
|
|
32
|
+
query.channel = 'online-store';
|
|
48
33
|
}
|
|
49
|
-
const res = await this.request.get(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const list = ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.list) || (res == null ? void 0 : res.list) || [];
|
|
34
|
+
const res = await this.request.get('/quotation/available', query, {
|
|
35
|
+
useCache: false,
|
|
36
|
+
osServer: true
|
|
37
|
+
});
|
|
38
|
+
const list = res?.data?.list || res?.list || [];
|
|
55
39
|
list.sort((a, b) => b.sort - a.sort);
|
|
56
40
|
this.store.list = list;
|
|
57
41
|
}
|
|
@@ -59,21 +43,19 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
59
43
|
return this.store.list;
|
|
60
44
|
}
|
|
61
45
|
getQuotationCustomerScopeInfo() {
|
|
62
|
-
const customerById =
|
|
63
|
-
const quotationScopes = this.store.list.filter(
|
|
46
|
+
const customerById = new Map();
|
|
47
|
+
const quotationScopes = this.store.list.filter(quotation => Array.isArray(quotation.customer) && quotation.customer.length > 0).map(quotation => {
|
|
64
48
|
const customerIds = [];
|
|
65
49
|
const customers = [];
|
|
66
|
-
const localSeen =
|
|
50
|
+
const localSeen = new Set();
|
|
67
51
|
const quotationCustomers = quotation.customer || [];
|
|
68
|
-
quotationCustomers.forEach(
|
|
69
|
-
const customerId = this.normalizeCustomerId(customer
|
|
70
|
-
if (!customerId || localSeen.has(customerId))
|
|
71
|
-
return;
|
|
52
|
+
quotationCustomers.forEach(customer => {
|
|
53
|
+
const customerId = this.normalizeCustomerId(customer?.id);
|
|
54
|
+
if (!customerId || localSeen.has(customerId)) return;
|
|
72
55
|
localSeen.add(customerId);
|
|
73
56
|
customerIds.push(customerId);
|
|
74
57
|
customers.push(customer);
|
|
75
|
-
if (!customerById.has(customerId))
|
|
76
|
-
customerById.set(customerId, customer);
|
|
58
|
+
if (!customerById.has(customerId)) customerById.set(customerId, customer);
|
|
77
59
|
});
|
|
78
60
|
return {
|
|
79
61
|
quotationId: quotation.id,
|
|
@@ -92,6 +74,7 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
92
74
|
};
|
|
93
75
|
return result;
|
|
94
76
|
}
|
|
77
|
+
|
|
95
78
|
/**
|
|
96
79
|
* Look up the quotation price for a specific product (+ optional variant) at a given datetime.
|
|
97
80
|
* Returns the price as a string (e.g. "300.00"), or null if no quotation applies.
|
|
@@ -101,23 +84,23 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
101
84
|
* the requested productId wins.
|
|
102
85
|
*/
|
|
103
86
|
getPriceForProduct(params) {
|
|
104
|
-
|
|
105
|
-
return ((_a = this.getQuotationMatchForProduct(params)) == null ? void 0 : _a.price) ?? null;
|
|
87
|
+
return this.getQuotationMatchForProduct(params)?.price ?? null;
|
|
106
88
|
}
|
|
107
89
|
getQuotationMatchForProduct(params) {
|
|
108
|
-
const {
|
|
90
|
+
const {
|
|
91
|
+
productId,
|
|
92
|
+
variantId,
|
|
93
|
+
datetime,
|
|
94
|
+
customer_id
|
|
95
|
+
} = params;
|
|
109
96
|
for (const quotation of this.store.list) {
|
|
110
97
|
const visible = this.isQuotationVisibleForCustomer(quotation, customer_id);
|
|
111
|
-
if (!visible)
|
|
112
|
-
continue;
|
|
98
|
+
if (!visible) continue;
|
|
113
99
|
const active = this.isQuotationActiveAt(quotation, datetime);
|
|
114
|
-
if (!active)
|
|
115
|
-
continue;
|
|
100
|
+
if (!active) continue;
|
|
116
101
|
const match = this.findProductData(quotation.product_data, productId, variantId);
|
|
117
|
-
if (!match)
|
|
118
|
-
|
|
119
|
-
if (match.value === 0)
|
|
120
|
-
continue;
|
|
102
|
+
if (!match) continue;
|
|
103
|
+
if (match.value === 0) continue;
|
|
121
104
|
return {
|
|
122
105
|
price: String(match.value),
|
|
123
106
|
quotationShelfId: quotation.id
|
|
@@ -126,18 +109,17 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
126
109
|
return null;
|
|
127
110
|
}
|
|
128
111
|
getQuotationShelfId(params) {
|
|
129
|
-
|
|
130
|
-
return ((_a = this.getQuotationMatchForProduct(params)) == null ? void 0 : _a.quotationShelfId) ?? 0;
|
|
112
|
+
return this.getQuotationMatchForProduct(params)?.quotationShelfId ?? 0;
|
|
131
113
|
}
|
|
114
|
+
|
|
132
115
|
/**
|
|
133
116
|
* Batch pre-compute quotation prices for a set of products across multiple time points.
|
|
134
117
|
* Key format: `${productId}:${timePoint}`
|
|
135
118
|
* This avoids repeated schedule matching when the same product appears in multiple resource rows.
|
|
136
119
|
*/
|
|
137
120
|
buildProductPriceMap(params) {
|
|
138
|
-
const map =
|
|
139
|
-
if (!this.store.list.length)
|
|
140
|
-
return map;
|
|
121
|
+
const map = new Map();
|
|
122
|
+
if (!this.store.list.length) return map;
|
|
141
123
|
for (const productId of params.productIds) {
|
|
142
124
|
for (const timePoint of params.timePoints) {
|
|
143
125
|
const key = `${productId}:${timePoint}`;
|
|
@@ -158,30 +140,23 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
158
140
|
}
|
|
159
141
|
isQuotationVisibleForCustomer(quotation, customerId) {
|
|
160
142
|
const customers = quotation.customer || [];
|
|
161
|
-
if (customers.length === 0)
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
return false;
|
|
165
|
-
return customers.some((customer) => String(customer.id) === String(customerId));
|
|
143
|
+
if (customers.length === 0) return true;
|
|
144
|
+
if (!this.hasValidCustomerId(customerId)) return false;
|
|
145
|
+
return customers.some(customer => String(customer.id) === String(customerId));
|
|
166
146
|
}
|
|
167
147
|
hasValidCustomerId(customerId) {
|
|
168
|
-
if (customerId ===
|
|
169
|
-
return false;
|
|
148
|
+
if (customerId === undefined || customerId === null || customerId === '') return false;
|
|
170
149
|
return Number(customerId) > 0;
|
|
171
150
|
}
|
|
172
151
|
normalizeCustomerId(customerId) {
|
|
173
|
-
if (customerId ===
|
|
174
|
-
return null;
|
|
152
|
+
if (customerId === undefined || customerId === null || customerId === '') return null;
|
|
175
153
|
return String(customerId);
|
|
176
154
|
}
|
|
177
155
|
isQuotationActiveAt(quotation, datetime) {
|
|
178
|
-
|
|
179
|
-
if (!((_a = quotation.schedule) == null ? void 0 : _a.length))
|
|
180
|
-
return false;
|
|
156
|
+
if (!quotation.schedule?.length) return false;
|
|
181
157
|
const scheduleItems = [];
|
|
182
|
-
quotation.schedule.forEach(
|
|
183
|
-
|
|
184
|
-
const full = (_a2 = this.scheduleResolver) == null ? void 0 : _a2.call(this, s.id);
|
|
158
|
+
quotation.schedule.forEach(s => {
|
|
159
|
+
const full = this.scheduleResolver?.(s.id);
|
|
185
160
|
if (full) {
|
|
186
161
|
scheduleItems.push(full);
|
|
187
162
|
return;
|
|
@@ -191,30 +166,21 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
191
166
|
}
|
|
192
167
|
const fallbackSchedule = {
|
|
193
168
|
...s,
|
|
194
|
-
repeat_type: s.repeat_type ||
|
|
169
|
+
repeat_type: s.repeat_type || 'none',
|
|
195
170
|
repeat_rule: s.repeat_rule || null,
|
|
196
171
|
time_slot: s.time_slot || []
|
|
197
172
|
};
|
|
198
173
|
scheduleItems.push(fallbackSchedule);
|
|
199
174
|
});
|
|
200
|
-
if (!scheduleItems.length)
|
|
201
|
-
|
|
202
|
-
return (0, import_getDateIsInSchedule.getDateIsInSchedule)(datetime, scheduleItems);
|
|
175
|
+
if (!scheduleItems.length) return false;
|
|
176
|
+
return (0, _getDateIsInSchedule.getDateIsInSchedule)(datetime, scheduleItems);
|
|
203
177
|
}
|
|
204
178
|
findProductData(productData, productId, variantId) {
|
|
205
179
|
if (variantId && variantId !== 0) {
|
|
206
|
-
const variantMatch = productData.find(
|
|
207
|
-
|
|
208
|
-
);
|
|
209
|
-
if (variantMatch)
|
|
210
|
-
return variantMatch;
|
|
180
|
+
const variantMatch = productData.find(p => p.product_id === productId && p.variant_id === variantId);
|
|
181
|
+
if (variantMatch) return variantMatch;
|
|
211
182
|
}
|
|
212
|
-
return productData.find(
|
|
213
|
-
(p) => p.product_id === productId && p.variant_id === 0
|
|
214
|
-
);
|
|
183
|
+
return productData.find(p => p.product_id === productId && p.variant_id === 0);
|
|
215
184
|
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
0 && (module.exports = {
|
|
219
|
-
QuotationModule
|
|
220
|
-
});
|
|
185
|
+
}
|
|
186
|
+
exports.QuotationModule = QuotationModule;
|
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
@@ -1,34 +1,17 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
__export(Resource_exports, {
|
|
22
|
-
ResourceListModule: () => ResourceListModule
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
23
5
|
});
|
|
24
|
-
|
|
25
|
-
var
|
|
26
|
-
var
|
|
27
|
-
|
|
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(
|
|
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(
|
|
52
|
-
if (!resource)
|
|
53
|
-
|
|
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(
|
|
60
|
-
if (!resource)
|
|
61
|
-
|
|
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(
|
|
66
|
-
if (!resource)
|
|
67
|
-
|
|
68
|
-
|
|
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(
|
|
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
|
-
|
|
88
|
-
0 && (module.exports = {
|
|
89
|
-
ResourceListModule
|
|
90
|
-
});
|
|
57
|
+
}
|
|
58
|
+
exports.ResourceListModule = ResourceListModule;
|
|
@@ -1,34 +1,24 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
20
|
-
|
|
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
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
__export(utils_exports, {
|
|
22
|
-
getResourcesByIds: () => getResourcesByIds,
|
|
23
|
-
getResourcesMap: () => getResourcesMap
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
24
5
|
});
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
36
|
-
|
|
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
|
-
|
|
39
|
-
0 && (module.exports = {
|
|
40
|
-
getResourcesByIds,
|
|
41
|
-
getResourcesMap
|
|
42
|
-
});
|
|
34
|
+
exports.getResourcesByIds = getResourcesByIds;
|