@hyper.software/common-helpers 2.3.15 → 2.10.1
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/lib/interfaces.d.ts +9 -33
- package/lib/interfaces.js +0 -1
- package/lib/interfaces.js.map +1 -1
- package/lib/services/bookingService/__tests__/bookingService.calculateDynamic.test.js +126 -5
- package/lib/services/bookingService/__tests__/bookingService.calculateDynamic.test.js.map +1 -1
- package/lib/services/bookingService/__tests__/bookingService.initialiseProducts.test.js +2 -2
- package/lib/services/bookingService/__tests__/bookingService.initialiseProducts.test.js.map +1 -1
- package/lib/services/bookingService/bookingsService.d.ts +4 -4
- package/lib/services/bookingService/bookingsService.js +25 -38
- package/lib/services/bookingService/bookingsService.js.map +1 -1
- package/lib/services/dynamicPricingService/dynamicPricingService.d.ts +16 -5
- package/lib/services/dynamicPricingService/dynamicPricingService.js +71 -89
- package/lib/services/dynamicPricingService/dynamicPricingService.js.map +1 -1
- package/lib/services/roomBookingService/index.js +1 -4
- package/lib/services/roomBookingService/index.js.map +1 -1
- package/lib/testingData/bookingData.d.ts +4 -4
- package/lib/testingData/roomsData.d.ts +4 -4
- package/lib/testingData/roomsData.js +4 -4
- package/lib/testingData/roomsData.js.map +1 -1
- package/package.json +2 -2
- package/lib/services/bookingService/bookingsService.getOccupancyBasedPricingDiscount.test.d.ts +0 -1
- package/lib/services/bookingService/bookingsService.getOccupancyBasedPricingDiscount.test.js +0 -35
- package/lib/services/bookingService/bookingsService.getOccupancyBasedPricingDiscount.test.js.map +0 -1
package/lib/interfaces.d.ts
CHANGED
|
@@ -35,8 +35,7 @@ export declare enum CURRENCY {
|
|
|
35
35
|
EUR = "EUR",
|
|
36
36
|
USD = "USD",
|
|
37
37
|
GBP = "GBP",
|
|
38
|
-
CHF = "CHF"
|
|
39
|
-
JPY = "JPY"
|
|
38
|
+
CHF = "CHF"
|
|
40
39
|
}
|
|
41
40
|
export declare const ALL_CURRENCY: CURRENCY[];
|
|
42
41
|
export declare enum DISCOUNT_TYPE {
|
|
@@ -62,10 +61,10 @@ export declare enum DYNAMIC_PRICING_TYPE {
|
|
|
62
61
|
INCREASE = "INCREASE",
|
|
63
62
|
DECREASE = "DECREASE"
|
|
64
63
|
}
|
|
65
|
-
export interface
|
|
64
|
+
export interface IRoomTypePricePlanPricingInformation {
|
|
66
65
|
[date: string]: number;
|
|
67
66
|
}
|
|
68
|
-
export type
|
|
67
|
+
export type IRoomTypePricePlanPricingRules = {
|
|
69
68
|
active?: boolean;
|
|
70
69
|
numberOfGuests?: number;
|
|
71
70
|
value?: number;
|
|
@@ -76,12 +75,12 @@ export interface ITimestamps {
|
|
|
76
75
|
updatedAt?: DateOrString;
|
|
77
76
|
deletedAt?: DateOrString;
|
|
78
77
|
}
|
|
79
|
-
export interface
|
|
78
|
+
export interface IRoomTypePricePlan extends ITimestamps {
|
|
80
79
|
roomTypeId?: string;
|
|
81
|
-
|
|
80
|
+
pricePlanId?: string;
|
|
82
81
|
companyId?: string;
|
|
83
|
-
pricing?:
|
|
84
|
-
pricingRules?:
|
|
82
|
+
pricing?: IRoomTypePricePlanPricingInformation;
|
|
83
|
+
pricingRules?: IRoomTypePricePlanPricingRules;
|
|
85
84
|
type?: CHANNEL_TYPE;
|
|
86
85
|
dynamicPricing?: IDynamicPricing;
|
|
87
86
|
}
|
|
@@ -92,8 +91,6 @@ export interface IDynamicPricing {
|
|
|
92
91
|
type: DYNAMIC_PRICING_TYPE;
|
|
93
92
|
amount: number;
|
|
94
93
|
basePrice?: IDynamicPricingBasePriceInformation;
|
|
95
|
-
maxIncrease?: number;
|
|
96
|
-
lastUpdateMap?: Record<string, string>;
|
|
97
94
|
}
|
|
98
95
|
export interface IDynamicPricingBasePriceInformation {
|
|
99
96
|
[date: string]: number;
|
|
@@ -320,9 +317,6 @@ export interface IRoomBookingIntegrations {
|
|
|
320
317
|
bnovo?: {
|
|
321
318
|
id?: string;
|
|
322
319
|
};
|
|
323
|
-
channex?: {
|
|
324
|
-
id?: string;
|
|
325
|
-
};
|
|
326
320
|
}
|
|
327
321
|
export interface IRoomBooking extends ITimestamps {
|
|
328
322
|
id?: string;
|
|
@@ -342,7 +336,6 @@ export interface IRoomBooking extends ITimestamps {
|
|
|
342
336
|
childrenAges?: Array<{
|
|
343
337
|
age: number | null | undefined;
|
|
344
338
|
}>;
|
|
345
|
-
disableDiscounts?: boolean;
|
|
346
339
|
}
|
|
347
340
|
export interface IRoom extends ITimestamps {
|
|
348
341
|
id?: string;
|
|
@@ -350,7 +343,6 @@ export interface IRoom extends ITimestamps {
|
|
|
350
343
|
name: string;
|
|
351
344
|
order?: number;
|
|
352
345
|
roomTypeId?: string;
|
|
353
|
-
accessCode?: string;
|
|
354
346
|
roomType?: any;
|
|
355
347
|
images?: any[];
|
|
356
348
|
roomAvailability?: IRoomAvailability;
|
|
@@ -395,22 +387,11 @@ export interface IRoomType extends ITimestamps {
|
|
|
395
387
|
maxNumberOfGuests?: number;
|
|
396
388
|
hasPrivateBathroom?: boolean;
|
|
397
389
|
description?: string;
|
|
398
|
-
|
|
390
|
+
rTPricePlans?: IRoomTypePricePlan[];
|
|
399
391
|
rooms?: IRoom[];
|
|
400
392
|
minimumStay?: number;
|
|
401
393
|
childrenRates?: IChildrenRates[];
|
|
402
394
|
childrenTourismTaxRates?: IChildrenTourismTaxRates[];
|
|
403
|
-
integrations?: IRoomTypeIntegrations;
|
|
404
|
-
}
|
|
405
|
-
export interface IRoomTypeIntegrations {
|
|
406
|
-
channelManagerType?: 'BNOVO' | 'CHANNEX';
|
|
407
|
-
bnovo?: {
|
|
408
|
-
id?: string;
|
|
409
|
-
};
|
|
410
|
-
channex?: {
|
|
411
|
-
id?: string;
|
|
412
|
-
propertyId?: string;
|
|
413
|
-
};
|
|
414
395
|
}
|
|
415
396
|
export interface IChildrenRates {
|
|
416
397
|
value?: number;
|
|
@@ -532,17 +513,12 @@ export interface ICompany extends ITimestamps {
|
|
|
532
513
|
currency?: CURRENCY;
|
|
533
514
|
email?: string;
|
|
534
515
|
integrations?: {
|
|
535
|
-
|
|
536
|
-
bnovo?: {
|
|
516
|
+
bnovo: {
|
|
537
517
|
id: string;
|
|
538
518
|
};
|
|
539
519
|
stripe?: {
|
|
540
520
|
accountId: string;
|
|
541
521
|
};
|
|
542
|
-
channex?: {
|
|
543
|
-
id: string;
|
|
544
|
-
isEnabled?: boolean;
|
|
545
|
-
};
|
|
546
522
|
};
|
|
547
523
|
address?: IAddress;
|
|
548
524
|
locationDescription?: {
|
package/lib/interfaces.js
CHANGED
package/lib/interfaces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;;AAEA,IAAM,kBAAkB,GAAG,UAAU,KAAU,IAAU,OAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,KAAK,CAAC,GAAG,CAAC,EAAV,CAAU,CAAC,EAA3C,CAA2C,CAAA;AAuBpG,IAAY,QASX;AATD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,2BAAe,CAAA;AACjB,CAAC,EATW,QAAQ,wBAAR,QAAQ,QASnB;AACY,QAAA,YAAY,GAAG,kBAAkB,CAAW,QAAQ,CAAC,CAAA;AAIlE,IAAY,
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,6 +66,51 @@ describe('calculateDynamicPricing', function () {
|
|
|
66
66
|
id: 'comp1',
|
|
67
67
|
holidays: [],
|
|
68
68
|
};
|
|
69
|
+
var mockGetRoomTypesAvailability = function (available, date) {
|
|
70
|
+
var _a;
|
|
71
|
+
return jest.fn().mockResolvedValue({
|
|
72
|
+
roomType1: {
|
|
73
|
+
availability: (_a = {},
|
|
74
|
+
_a[date] = available,
|
|
75
|
+
_a),
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
var mockGetRoomsByCompanyId = function (count) {
|
|
80
|
+
return jest.fn().mockResolvedValue({
|
|
81
|
+
list: Array(count).fill({ roomTypeId: 'roomType1' }),
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
it('increases price with low availability and near date', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
85
|
+
var result, price;
|
|
86
|
+
var _a, _b;
|
|
87
|
+
return __generator(this, function (_c) {
|
|
88
|
+
switch (_c.label) {
|
|
89
|
+
case 0: return [4 /*yield*/, (0, dynamicPricingService_1.calculateDynamicPricing)({
|
|
90
|
+
currentPricing: (_a = {}, _a[nearDate] = 80, _a),
|
|
91
|
+
dynamicPricing: {
|
|
92
|
+
isActive: true,
|
|
93
|
+
basePrice: (_b = {}, _b[nearDate] = 100, _b),
|
|
94
|
+
startDate: nearDate,
|
|
95
|
+
endDate: nearDate,
|
|
96
|
+
type: interfaces_1.DYNAMIC_PRICING_TYPE.INCREASE,
|
|
97
|
+
amount: 20,
|
|
98
|
+
},
|
|
99
|
+
existingBasePriceMap: {},
|
|
100
|
+
company: mockCompany,
|
|
101
|
+
roomTypeId: 'roomType1',
|
|
102
|
+
companyId: 'comp1',
|
|
103
|
+
getRoomTypesAvailability: mockGetRoomTypesAvailability(0, nearDate),
|
|
104
|
+
getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
|
|
105
|
+
})];
|
|
106
|
+
case 1:
|
|
107
|
+
result = _c.sent();
|
|
108
|
+
price = result.updatedPricing[nearDate];
|
|
109
|
+
expect(price).toBeGreaterThan(100);
|
|
110
|
+
return [2 /*return*/];
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}); });
|
|
69
114
|
it('returns base price when dynamic pricing is inactive', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
70
115
|
var result;
|
|
71
116
|
var _a, _b;
|
|
@@ -76,10 +121,14 @@ describe('calculateDynamicPricing', function () {
|
|
|
76
121
|
dynamicPricing: baseDynamicPricing({ isActive: false }),
|
|
77
122
|
existingBasePriceMap: (_b = {}, _b[today.format('YYYY-MM-DD')] = 90, _b),
|
|
78
123
|
company: mockCompany,
|
|
124
|
+
roomTypeId: 'roomType1',
|
|
125
|
+
companyId: 'comp1',
|
|
126
|
+
getRoomTypesAvailability: mockGetRoomTypesAvailability(5, today.format('YYYY-MM-DD')),
|
|
127
|
+
getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
|
|
79
128
|
})];
|
|
80
129
|
case 1:
|
|
81
130
|
result = _c.sent();
|
|
82
|
-
expect(result.updatedPricing[today.format('YYYY-MM-DD')]).toBe(
|
|
131
|
+
expect(result.updatedPricing[today.format('YYYY-MM-DD')]).toBe(90);
|
|
83
132
|
return [2 /*return*/];
|
|
84
133
|
}
|
|
85
134
|
});
|
|
@@ -103,6 +152,10 @@ describe('calculateDynamicPricing', function () {
|
|
|
103
152
|
dynamicPricing: baseDynamicPricing(),
|
|
104
153
|
existingBasePriceMap: {},
|
|
105
154
|
company: companyWithHoliday,
|
|
155
|
+
roomTypeId: 'roomType1',
|
|
156
|
+
companyId: 'comp1',
|
|
157
|
+
getRoomTypesAvailability: mockGetRoomTypesAvailability(1, holidayDate),
|
|
158
|
+
getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
|
|
106
159
|
})];
|
|
107
160
|
case 1:
|
|
108
161
|
result = _b.sent();
|
|
@@ -121,15 +174,19 @@ describe('calculateDynamicPricing', function () {
|
|
|
121
174
|
dynamicPricing: baseDynamicPricing({ isActive: false }),
|
|
122
175
|
existingBasePriceMap: (_b = {}, _b[today.format('YYYY-MM-DD')] = 95, _b),
|
|
123
176
|
company: mockCompany,
|
|
177
|
+
roomTypeId: 'roomType1',
|
|
178
|
+
companyId: 'comp1',
|
|
179
|
+
getRoomTypesAvailability: mockGetRoomTypesAvailability(3, today.format('YYYY-MM-DD')),
|
|
180
|
+
getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
|
|
124
181
|
})];
|
|
125
182
|
case 1:
|
|
126
183
|
result = _c.sent();
|
|
127
|
-
expect(result.updatedPricing[today.format('YYYY-MM-DD')]).toBe(
|
|
184
|
+
expect(result.updatedPricing[today.format('YYYY-MM-DD')]).toBe(95);
|
|
128
185
|
return [2 /*return*/];
|
|
129
186
|
}
|
|
130
187
|
});
|
|
131
188
|
}); });
|
|
132
|
-
it('
|
|
189
|
+
it('keeps price near base when availability is 100% and date is far', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
133
190
|
var result, price;
|
|
134
191
|
var _a;
|
|
135
192
|
return __generator(this, function (_b) {
|
|
@@ -139,11 +196,39 @@ describe('calculateDynamicPricing', function () {
|
|
|
139
196
|
dynamicPricing: baseDynamicPricing(),
|
|
140
197
|
existingBasePriceMap: {},
|
|
141
198
|
company: mockCompany,
|
|
199
|
+
roomTypeId: 'roomType1',
|
|
200
|
+
companyId: 'comp1',
|
|
201
|
+
getRoomTypesAvailability: mockGetRoomTypesAvailability(10, farDate),
|
|
202
|
+
getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
|
|
142
203
|
})];
|
|
143
204
|
case 1:
|
|
144
205
|
result = _b.sent();
|
|
145
206
|
price = result.updatedPricing[farDate];
|
|
146
207
|
expect(price).toBeGreaterThanOrEqual(basePrice);
|
|
208
|
+
expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.1));
|
|
209
|
+
return [2 /*return*/];
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}); });
|
|
213
|
+
it('increases price moderately with 50% availability and date is far', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
214
|
+
var result, price;
|
|
215
|
+
var _a;
|
|
216
|
+
return __generator(this, function (_b) {
|
|
217
|
+
switch (_b.label) {
|
|
218
|
+
case 0: return [4 /*yield*/, (0, dynamicPricingService_1.calculateDynamicPricing)({
|
|
219
|
+
currentPricing: (_a = {}, _a[farDate] = basePrice, _a),
|
|
220
|
+
dynamicPricing: baseDynamicPricing(),
|
|
221
|
+
existingBasePriceMap: {},
|
|
222
|
+
company: mockCompany,
|
|
223
|
+
roomTypeId: 'roomType1',
|
|
224
|
+
companyId: 'comp1',
|
|
225
|
+
getRoomTypesAvailability: mockGetRoomTypesAvailability(5, farDate),
|
|
226
|
+
getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
|
|
227
|
+
})];
|
|
228
|
+
case 1:
|
|
229
|
+
result = _b.sent();
|
|
230
|
+
price = result.updatedPricing[farDate];
|
|
231
|
+
expect(price).toBeGreaterThan(basePrice);
|
|
147
232
|
expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.4));
|
|
148
233
|
return [2 /*return*/];
|
|
149
234
|
}
|
|
@@ -159,11 +244,15 @@ describe('calculateDynamicPricing', function () {
|
|
|
159
244
|
dynamicPricing: baseDynamicPricing(),
|
|
160
245
|
existingBasePriceMap: {},
|
|
161
246
|
company: mockCompany,
|
|
247
|
+
roomTypeId: 'roomType1',
|
|
248
|
+
companyId: 'comp1',
|
|
249
|
+
getRoomTypesAvailability: mockGetRoomTypesAvailability(1, farDate),
|
|
250
|
+
getRoomsByCompanyId: mockGetRoomsByCompanyId(50),
|
|
162
251
|
})];
|
|
163
252
|
case 1:
|
|
164
253
|
result = _b.sent();
|
|
165
254
|
price = result.updatedPricing[farDate];
|
|
166
|
-
expect(price).
|
|
255
|
+
expect(price).toBeGreaterThan(basePrice);
|
|
167
256
|
expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.5));
|
|
168
257
|
return [2 /*return*/];
|
|
169
258
|
}
|
|
@@ -179,6 +268,10 @@ describe('calculateDynamicPricing', function () {
|
|
|
179
268
|
dynamicPricing: baseDynamicPricing(),
|
|
180
269
|
existingBasePriceMap: {},
|
|
181
270
|
company: mockCompany,
|
|
271
|
+
roomTypeId: 'roomType1',
|
|
272
|
+
companyId: 'comp1',
|
|
273
|
+
getRoomTypesAvailability: mockGetRoomTypesAvailability(10, nearDate),
|
|
274
|
+
getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
|
|
182
275
|
})];
|
|
183
276
|
case 1:
|
|
184
277
|
result = _b.sent();
|
|
@@ -199,15 +292,43 @@ describe('calculateDynamicPricing', function () {
|
|
|
199
292
|
dynamicPricing: baseDynamicPricing(),
|
|
200
293
|
existingBasePriceMap: {},
|
|
201
294
|
company: mockCompany,
|
|
295
|
+
roomTypeId: 'roomType1',
|
|
296
|
+
companyId: 'comp1',
|
|
297
|
+
getRoomTypesAvailability: mockGetRoomTypesAvailability(5, nearDate),
|
|
298
|
+
getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
|
|
202
299
|
})];
|
|
203
300
|
case 1:
|
|
204
301
|
result = _b.sent();
|
|
205
302
|
price = result.updatedPricing[nearDate];
|
|
206
|
-
expect(price).
|
|
303
|
+
expect(price).toBeGreaterThan(basePrice);
|
|
207
304
|
expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.4));
|
|
208
305
|
return [2 /*return*/];
|
|
209
306
|
}
|
|
210
307
|
});
|
|
211
308
|
}); });
|
|
309
|
+
it('maximizes price with 1 room left and date is near', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
310
|
+
var result, price;
|
|
311
|
+
var _a;
|
|
312
|
+
return __generator(this, function (_b) {
|
|
313
|
+
switch (_b.label) {
|
|
314
|
+
case 0: return [4 /*yield*/, (0, dynamicPricingService_1.calculateDynamicPricing)({
|
|
315
|
+
currentPricing: (_a = {}, _a[nearDate] = basePrice, _a),
|
|
316
|
+
dynamicPricing: baseDynamicPricing(),
|
|
317
|
+
existingBasePriceMap: {},
|
|
318
|
+
company: mockCompany,
|
|
319
|
+
roomTypeId: 'roomType1',
|
|
320
|
+
companyId: 'comp1',
|
|
321
|
+
getRoomTypesAvailability: mockGetRoomTypesAvailability(1, nearDate),
|
|
322
|
+
getRoomsByCompanyId: mockGetRoomsByCompanyId(50),
|
|
323
|
+
})];
|
|
324
|
+
case 1:
|
|
325
|
+
result = _b.sent();
|
|
326
|
+
price = result.updatedPricing[nearDate];
|
|
327
|
+
expect(price).toBeGreaterThan(Math.round(basePrice * 1.3));
|
|
328
|
+
expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.5));
|
|
329
|
+
return [2 /*return*/];
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
}); });
|
|
212
333
|
});
|
|
213
334
|
//# sourceMappingURL=bookingService.calculateDynamic.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookingService.calculateDynamic.test.js","sourceRoot":"","sources":["../../../../src/services/bookingService/__tests__/bookingService.calculateDynamic.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA2B;AAC3B,2FAA2F;AAC3F,
|
|
1
|
+
{"version":3,"file":"bookingService.calculateDynamic.test.js","sourceRoot":"","sources":["../../../../src/services/bookingService/__tests__/bookingService.calculateDynamic.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2072,10 +2072,10 @@ var bookingMock = {
|
|
|
2072
2072
|
createdAt: '2023-12-06T17:22:49.447Z',
|
|
2073
2073
|
updatedAt: '2025-03-03T17:33:29.224Z',
|
|
2074
2074
|
deletedAt: null,
|
|
2075
|
-
|
|
2075
|
+
rTPricePlans: [
|
|
2076
2076
|
{
|
|
2077
2077
|
roomTypeId: '230641dc-2405-4ca0-a585-b84d80f0d134',
|
|
2078
|
-
|
|
2078
|
+
pricePlanId: 'a484418f-cf2e-4041-87f4-afc8565a391c',
|
|
2079
2079
|
companyId: '90e5d6d0-83bf-47b2-a131-2c897065f2b9',
|
|
2080
2080
|
pricing: {
|
|
2081
2081
|
'2022-12-06': 56,
|