@escapenavigator/utils 1.10.2 → 1.10.4
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 +2 -1
- package/dist/get-order-cancelation-state/index.js +18 -6
- package/dist/get-order-cancelation-state/index.test.js +9 -0
- 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;
|
|
@@ -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, playersPrice, slotDiscount, payed, minimalPrice, }: Props): {
|
|
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, playersPrice, slotDiscount = 0, payed, minimalPrice, }) {
|
|
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,8 +46,11 @@ 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
|
|
50
|
+
? questroom_cancelation_type_enum_1.QuestroomCancelationTypeEnum.FULL_PRICE
|
|
51
|
+
: cancelationRule;
|
|
40
52
|
const fineAmount = +(0, get_cancelation_fee_amount_1.getCancelationFeeAmount)({
|
|
41
|
-
cancelationRule,
|
|
53
|
+
cancelationRule: cancelationType,
|
|
42
54
|
total: playersPrice,
|
|
43
55
|
slotDiscount,
|
|
44
56
|
minimalPrice,
|
|
@@ -17,6 +17,7 @@ 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,
|
|
@@ -39,6 +40,7 @@ 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,
|
|
@@ -64,6 +66,7 @@ describe('getOrderCancelationState function', () => {
|
|
|
64
66
|
returnCertificates: true,
|
|
65
67
|
certificates: [],
|
|
66
68
|
minHoursForFreeCanceling: 48,
|
|
69
|
+
minHoursForFullFine: 0,
|
|
67
70
|
playersPrice: 100,
|
|
68
71
|
payed: 0,
|
|
69
72
|
minimalPrice: 50,
|
|
@@ -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
|
{
|
|
@@ -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
|
{
|
|
@@ -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
|
{
|
|
@@ -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: [
|
|
@@ -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
|
{
|
|
@@ -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
|
{
|
|
@@ -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.4",
|
|
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.4",
|
|
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": "09cfd021bca13eaa7a15ff93d537b040b1d3076a"
|
|
59
59
|
}
|