@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.
@@ -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
- total: number;
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, total, 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, total, slotDiscount = 0, payed, minimalPrice, }) {
27
- const minHours = cancelationRule === questroom_cancelation_type_enum_1.QuestroomCancelationTypeEnum.NO ? 0 : minHoursForFreeCanceling;
28
- const allowedCancelation = cancelationReason === order_cancel_reson_enum_1.OrderCancelReasonEnum.QUESTROOM ||
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: minHours,
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
- total: 100,
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
- total: 100,
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
- total: 100,
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
- total: 100,
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
- total: 100,
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
- total: 100,
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
- total: 100,
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
- total: 100,
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
- total: 100,
244
+ playersPrice: 100,
236
245
  payed: 50,
237
246
  minimalPrice: 50,
238
247
  });
@@ -0,0 +1,5 @@
1
+ export declare const getPlayersPrice: (order: {
2
+ price: Record<string, number>;
3
+ players: number;
4
+ children: number;
5
+ }) => number;
@@ -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,2 @@
1
+ export declare const getPricesPlayersArray: (price?: Record<string, number>) => string[];
2
+ export declare const getPricesArray: (price?: Record<string, number>) => number[];
@@ -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;
@@ -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.1",
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.1",
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": "395c5d6b2de6f4628cb8303e59f66d6e0b1e0d58"
58
+ "gitHead": "5e881af087038b6cc06741b505a404facb6751a1"
59
59
  }