@escapenavigator/utils 1.10.2 → 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;
@@ -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 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,8 +46,9 @@ 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,
51
+ cancelationRule: cancelationType,
42
52
  total: playersPrice,
43
53
  slotDiscount,
44
54
  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,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.2",
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.2",
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": "ae85440284de3c5cde10221861a888fd3669fce7"
58
+ "gitHead": "5e881af087038b6cc06741b505a404facb6751a1"
59
59
  }