@escapenavigator/utils 1.10.1 → 1.10.3
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/get-order-cancelation-state/index.d.ts +3 -2
- package/dist/get-order-cancelation-state/index.js +17 -7
- package/dist/get-order-cancelation-state/index.test.js +18 -9
- package/dist/get-players-price.d.ts +5 -0
- package/dist/get-players-price.js +13 -0
- package/dist/get-prices.d.ts +2 -0
- package/dist/get-prices.js +17 -0
- package/dist/serialize-slot.js +3 -1
- package/package.json +3 -3
|
@@ -4,6 +4,7 @@ import { TransactionTypeEnum } from '@escapenavigator/types/dist/transaction/enu
|
|
|
4
4
|
declare type Props = {
|
|
5
5
|
date: string;
|
|
6
6
|
minHoursForFreeCanceling: number;
|
|
7
|
+
minHoursForFullFine: number;
|
|
7
8
|
cancelationReason: OrderCancelReasonEnum;
|
|
8
9
|
returnCertificates: boolean;
|
|
9
10
|
cancelationAmount: number;
|
|
@@ -15,7 +16,7 @@ declare type Props = {
|
|
|
15
16
|
certificates: Array<{
|
|
16
17
|
nominal: number;
|
|
17
18
|
}>;
|
|
18
|
-
|
|
19
|
+
playersPrice: number;
|
|
19
20
|
payed: number;
|
|
20
21
|
minimalPrice: number;
|
|
21
22
|
slotDiscount: number;
|
|
@@ -32,7 +33,7 @@ export declare const isCancelationAllowed: ({ date, minHoursForFreeCanceling, }:
|
|
|
32
33
|
date: string;
|
|
33
34
|
minHoursForFreeCanceling: number;
|
|
34
35
|
}) => boolean;
|
|
35
|
-
export declare function getOrderCancelationState({ cancelationReason, cancelationRule, cancelationAmount, transactions, date, returnCertificates, certificates, minHoursForFreeCanceling,
|
|
36
|
+
export declare function getOrderCancelationState({ cancelationReason, cancelationRule, cancelationAmount, transactions, date, returnCertificates, certificates, minHoursForFreeCanceling, minHoursForFullFine, playersPrice, slotDiscount, payed, minimalPrice, }: Props): {
|
|
36
37
|
fineAmount: number;
|
|
37
38
|
returnAmount: number;
|
|
38
39
|
allowedCancelation: boolean;
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getOrderCancelationState = exports.isCancelationAllowed = exports.FineDescriptions = void 0;
|
|
7
|
+
/* eslint-disable complexity */
|
|
7
8
|
const order_cancel_reson_enum_1 = require("@escapenavigator/types/dist/order/enum/order-cancel-reson.enum");
|
|
8
9
|
const questroom_cancelation_type_enum_1 = require("@escapenavigator/types/dist/questroom/enum/questroom-cancelation-type.enum");
|
|
9
10
|
const transaction_type_enum_1 = require("@escapenavigator/types/dist/transaction/enum/transaction-type.enum");
|
|
@@ -23,13 +24,21 @@ var FineDescriptions;
|
|
|
23
24
|
})(FineDescriptions = exports.FineDescriptions || (exports.FineDescriptions = {}));
|
|
24
25
|
const isCancelationAllowed = ({ date, minHoursForFreeCanceling = 0, }) => (0, differenceInHours_1.default)(new Date(date), new Date()) >= minHoursForFreeCanceling;
|
|
25
26
|
exports.isCancelationAllowed = isCancelationAllowed;
|
|
26
|
-
function getOrderCancelationState({ cancelationReason, cancelationRule, cancelationAmount, transactions, date, returnCertificates, certificates, minHoursForFreeCanceling,
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
(0, exports.isCancelationAllowed)({
|
|
27
|
+
function getOrderCancelationState({ cancelationReason, cancelationRule, cancelationAmount, transactions, date, returnCertificates, certificates, minHoursForFreeCanceling, minHoursForFullFine, playersPrice, slotDiscount = 0, payed, minimalPrice, }) {
|
|
28
|
+
const halfFineCancelation = cancelationRule !== questroom_cancelation_type_enum_1.QuestroomCancelationTypeEnum.NO &&
|
|
29
|
+
cancelationReason !== order_cancel_reson_enum_1.OrderCancelReasonEnum.QUESTROOM &&
|
|
30
|
+
!(0, exports.isCancelationAllowed)({
|
|
30
31
|
date,
|
|
31
|
-
minHoursForFreeCanceling
|
|
32
|
+
minHoursForFreeCanceling,
|
|
32
33
|
});
|
|
34
|
+
const foolFineCancelation = cancelationRule !== questroom_cancelation_type_enum_1.QuestroomCancelationTypeEnum.NO &&
|
|
35
|
+
cancelationReason !== order_cancel_reson_enum_1.OrderCancelReasonEnum.QUESTROOM &&
|
|
36
|
+
!!minHoursForFullFine &&
|
|
37
|
+
!(0, exports.isCancelationAllowed)({
|
|
38
|
+
date,
|
|
39
|
+
minHoursForFreeCanceling: minHoursForFullFine,
|
|
40
|
+
});
|
|
41
|
+
const allowedCancelation = !halfFineCancelation && !foolFineCancelation;
|
|
33
42
|
const receivedTransactions = getReceivedTransactions(transactions);
|
|
34
43
|
const receivedTransactionsAmount = receivedTransactions.reduce((acc, tr) => acc + tr.amount, 0);
|
|
35
44
|
const autoReturtAvailable = receivedTransactions.length === 1 &&
|
|
@@ -37,9 +46,10 @@ function getOrderCancelationState({ cancelationReason, cancelationRule, cancelat
|
|
|
37
46
|
const orderPayment = returnCertificates
|
|
38
47
|
? payed - certificates.reduce((acc, c) => acc + c.nominal, 0)
|
|
39
48
|
: payed;
|
|
49
|
+
const cancelationType = foolFineCancelation ? questroom_cancelation_type_enum_1.QuestroomCancelationTypeEnum.FULL_PRICE : cancelationRule;
|
|
40
50
|
const fineAmount = +(0, get_cancelation_fee_amount_1.getCancelationFeeAmount)({
|
|
41
|
-
cancelationRule,
|
|
42
|
-
total,
|
|
51
|
+
cancelationRule: cancelationType,
|
|
52
|
+
total: playersPrice,
|
|
43
53
|
slotDiscount,
|
|
44
54
|
minimalPrice,
|
|
45
55
|
cancelationAmount,
|
|
@@ -17,8 +17,9 @@ describe('getOrderCancelationState function', () => {
|
|
|
17
17
|
returnCertificates: true,
|
|
18
18
|
certificates: [],
|
|
19
19
|
minHoursForFreeCanceling: 48,
|
|
20
|
+
minHoursForFullFine: 0,
|
|
20
21
|
slotDiscount: 0,
|
|
21
|
-
|
|
22
|
+
playersPrice: 100,
|
|
22
23
|
payed: 20,
|
|
23
24
|
minimalPrice: 50,
|
|
24
25
|
});
|
|
@@ -39,9 +40,10 @@ describe('getOrderCancelationState function', () => {
|
|
|
39
40
|
date: (0, date_fns_1.addHours)(new Date(), 50).toISOString(),
|
|
40
41
|
returnCertificates: true,
|
|
41
42
|
slotDiscount: 0,
|
|
43
|
+
minHoursForFullFine: 0,
|
|
42
44
|
certificates: [],
|
|
43
45
|
minHoursForFreeCanceling: 48,
|
|
44
|
-
|
|
46
|
+
playersPrice: 100,
|
|
45
47
|
payed: 30,
|
|
46
48
|
minimalPrice: 50,
|
|
47
49
|
});
|
|
@@ -64,7 +66,8 @@ describe('getOrderCancelationState function', () => {
|
|
|
64
66
|
returnCertificates: true,
|
|
65
67
|
certificates: [],
|
|
66
68
|
minHoursForFreeCanceling: 48,
|
|
67
|
-
|
|
69
|
+
minHoursForFullFine: 0,
|
|
70
|
+
playersPrice: 100,
|
|
68
71
|
payed: 0,
|
|
69
72
|
minimalPrice: 50,
|
|
70
73
|
});
|
|
@@ -81,6 +84,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
81
84
|
cancelationReason: order_cancel_reson_enum_1.OrderCancelReasonEnum.CLIENT,
|
|
82
85
|
slotDiscount: 0,
|
|
83
86
|
cancelationAmount: 0,
|
|
87
|
+
minHoursForFullFine: 0,
|
|
84
88
|
cancelationRule: questroom_cancelation_type_enum_1.QuestroomCancelationTypeEnum.FULL_PRICE,
|
|
85
89
|
transactions: [
|
|
86
90
|
{
|
|
@@ -92,7 +96,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
92
96
|
returnCertificates: true,
|
|
93
97
|
certificates: [],
|
|
94
98
|
minHoursForFreeCanceling: 48,
|
|
95
|
-
|
|
99
|
+
playersPrice: 100,
|
|
96
100
|
payed: 20,
|
|
97
101
|
minimalPrice: 50,
|
|
98
102
|
});
|
|
@@ -109,6 +113,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
109
113
|
cancelationReason: order_cancel_reson_enum_1.OrderCancelReasonEnum.CLIENT,
|
|
110
114
|
slotDiscount: 0,
|
|
111
115
|
cancelationAmount: 0,
|
|
116
|
+
minHoursForFullFine: 0,
|
|
112
117
|
cancelationRule: questroom_cancelation_type_enum_1.QuestroomCancelationTypeEnum.NO,
|
|
113
118
|
transactions: [
|
|
114
119
|
{
|
|
@@ -120,7 +125,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
120
125
|
returnCertificates: true,
|
|
121
126
|
certificates: [],
|
|
122
127
|
minHoursForFreeCanceling: 48,
|
|
123
|
-
|
|
128
|
+
playersPrice: 100,
|
|
124
129
|
payed: 100,
|
|
125
130
|
minimalPrice: 50,
|
|
126
131
|
});
|
|
@@ -137,6 +142,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
137
142
|
cancelationReason: order_cancel_reson_enum_1.OrderCancelReasonEnum.CLIENT,
|
|
138
143
|
slotDiscount: 0,
|
|
139
144
|
cancelationAmount: 0,
|
|
145
|
+
minHoursForFullFine: 0,
|
|
140
146
|
cancelationRule: questroom_cancelation_type_enum_1.QuestroomCancelationTypeEnum.FULL_PRICE,
|
|
141
147
|
transactions: [
|
|
142
148
|
{
|
|
@@ -148,7 +154,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
148
154
|
returnCertificates: true,
|
|
149
155
|
certificates: [],
|
|
150
156
|
minHoursForFreeCanceling: 48,
|
|
151
|
-
|
|
157
|
+
playersPrice: 100,
|
|
152
158
|
payed: 100,
|
|
153
159
|
minimalPrice: 50,
|
|
154
160
|
});
|
|
@@ -164,6 +170,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
164
170
|
const result = (0, _1.getOrderCancelationState)({
|
|
165
171
|
cancelationReason: order_cancel_reson_enum_1.OrderCancelReasonEnum.CLIENT,
|
|
166
172
|
slotDiscount: 0,
|
|
173
|
+
minHoursForFullFine: 0,
|
|
167
174
|
cancelationAmount: 0,
|
|
168
175
|
cancelationRule: questroom_cancelation_type_enum_1.QuestroomCancelationTypeEnum.HALF_PRICE,
|
|
169
176
|
transactions: [
|
|
@@ -176,7 +183,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
176
183
|
returnCertificates: true,
|
|
177
184
|
certificates: [],
|
|
178
185
|
minHoursForFreeCanceling: 48,
|
|
179
|
-
|
|
186
|
+
playersPrice: 100,
|
|
180
187
|
payed: 100,
|
|
181
188
|
minimalPrice: 50,
|
|
182
189
|
});
|
|
@@ -193,6 +200,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
193
200
|
cancelationReason: order_cancel_reson_enum_1.OrderCancelReasonEnum.CLIENT,
|
|
194
201
|
slotDiscount: 10,
|
|
195
202
|
cancelationAmount: 0,
|
|
203
|
+
minHoursForFullFine: 0,
|
|
196
204
|
cancelationRule: questroom_cancelation_type_enum_1.QuestroomCancelationTypeEnum.HALF_PRICE,
|
|
197
205
|
transactions: [
|
|
198
206
|
{
|
|
@@ -204,7 +212,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
204
212
|
returnCertificates: true,
|
|
205
213
|
certificates: [],
|
|
206
214
|
minHoursForFreeCanceling: 48,
|
|
207
|
-
|
|
215
|
+
playersPrice: 100,
|
|
208
216
|
payed: 100,
|
|
209
217
|
minimalPrice: 50,
|
|
210
218
|
});
|
|
@@ -221,6 +229,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
221
229
|
cancelationReason: order_cancel_reson_enum_1.OrderCancelReasonEnum.CLIENT,
|
|
222
230
|
slotDiscount: 0,
|
|
223
231
|
cancelationAmount: 0,
|
|
232
|
+
minHoursForFullFine: 0,
|
|
224
233
|
cancelationRule: questroom_cancelation_type_enum_1.QuestroomCancelationTypeEnum.FULL_PRICE,
|
|
225
234
|
transactions: [
|
|
226
235
|
{
|
|
@@ -232,7 +241,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
232
241
|
returnCertificates: true,
|
|
233
242
|
certificates: [],
|
|
234
243
|
minHoursForFreeCanceling: 48,
|
|
235
|
-
|
|
244
|
+
playersPrice: 100,
|
|
236
245
|
payed: 50,
|
|
237
246
|
minimalPrice: 50,
|
|
238
247
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPlayersPrice = void 0;
|
|
4
|
+
const getPlayersPrice = (order) => {
|
|
5
|
+
if (!order || !order.price)
|
|
6
|
+
return 0;
|
|
7
|
+
let baseAmount = order.price[order.players] || 0;
|
|
8
|
+
if (!Number.isNaN(+order.price.child) && order.children) {
|
|
9
|
+
baseAmount += order.price.child * order.children;
|
|
10
|
+
}
|
|
11
|
+
return baseAmount;
|
|
12
|
+
};
|
|
13
|
+
exports.getPlayersPrice = getPlayersPrice;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPricesArray = exports.getPricesPlayersArray = void 0;
|
|
4
|
+
const getPricesPlayersArray = (price) => {
|
|
5
|
+
if (!price)
|
|
6
|
+
return [];
|
|
7
|
+
const rawPrices = Object.fromEntries(Object.entries(price).filter(([ppl]) => !Number.isNaN(+ppl)));
|
|
8
|
+
return Object.keys(rawPrices).sort((a, b) => +a - +b);
|
|
9
|
+
};
|
|
10
|
+
exports.getPricesPlayersArray = getPricesPlayersArray;
|
|
11
|
+
const getPricesArray = (price) => {
|
|
12
|
+
if (!price)
|
|
13
|
+
return [];
|
|
14
|
+
const rawPrices = Object.fromEntries(Object.entries(price).filter(([ppl]) => !Number.isNaN(+ppl)));
|
|
15
|
+
return Object.values(rawPrices).sort((a, b) => +a - +b);
|
|
16
|
+
};
|
|
17
|
+
exports.getPricesArray = getPricesArray;
|
package/dist/serialize-slot.js
CHANGED
|
@@ -22,7 +22,7 @@ const serializeSlotOrderData = (order) => order && {
|
|
|
22
22
|
};
|
|
23
23
|
exports.serializeSlotOrderData = serializeSlotOrderData;
|
|
24
24
|
const serializeSlot = ({ slot, order }) => {
|
|
25
|
-
const { prepayment, prepaymentType, title, minHoursForBooking, minHoursForFreeCanceling, cancelationRule, cancelationAmount, } = slot.rule || defailt_rule_1.defaultRule;
|
|
25
|
+
const { prepayment, prepaymentType, title, minHoursForBooking, minHoursForFreeCanceling, cancelationRule, tax, minHoursForFullFine, cancelationAmount, } = slot.rule || defailt_rule_1.defaultRule;
|
|
26
26
|
return {
|
|
27
27
|
id: slot.id,
|
|
28
28
|
questroomId: slot.questroomId,
|
|
@@ -38,6 +38,8 @@ const serializeSlot = ({ slot, order }) => {
|
|
|
38
38
|
breakReason: slot.breakReason,
|
|
39
39
|
rule: {
|
|
40
40
|
prepayment,
|
|
41
|
+
tax,
|
|
42
|
+
minHoursForFullFine,
|
|
41
43
|
cancelationAmount,
|
|
42
44
|
prepaymentType,
|
|
43
45
|
title,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@escapenavigator/utils",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.3",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"test": "jest"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@escapenavigator/types": "^1.10.
|
|
17
|
+
"@escapenavigator/types": "^1.10.3",
|
|
18
18
|
"axios": "^0.21.4",
|
|
19
19
|
"class-transformer": "^0.5.1",
|
|
20
20
|
"class-validator": "^0.13.2",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"node_modules"
|
|
56
56
|
]
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "5e881af087038b6cc06741b505a404facb6751a1"
|
|
59
59
|
}
|