@sellout/models 0.0.188 → 0.0.192
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/graphql/fragments/order.fragment.js +1 -0
- package/.dist/graphql/fragments/order.fragment.js.map +1 -1
- package/.dist/graphql/mutations/refundOrder.mutation.js +13 -0
- package/.dist/graphql/mutations/refundOrder.mutation.js.map +1 -1
- package/.dist/graphql/queries/order.query.js +11 -0
- package/.dist/graphql/queries/order.query.js.map +1 -1
- package/.dist/interfaces/IOrder.d.ts +1 -0
- package/.dist/interfaces/IOrder.js.map +1 -1
- package/.dist/interfaces/IOrderQuery.d.ts +1 -0
- package/.dist/interfaces/IRefundModal.d.ts +1 -0
- package/.dist/interfaces/ISeason.d.ts +1 -0
- package/.dist/schemas/Order.d.ts +26 -0
- package/.dist/schemas/Order.js +3 -0
- package/.dist/schemas/Order.js.map +1 -1
- package/.dist/sellout-proto.js +351 -0
- package/.dist/utils/AnalyticsUtil.js +99 -20
- package/.dist/utils/AnalyticsUtil.js.map +1 -1
- package/.dist/utils/PaymentUtil.d.ts +1 -1
- package/.dist/utils/PaymentUtil.js +14 -66
- package/.dist/utils/PaymentUtil.js.map +1 -1
- package/package.json +3 -3
- package/src/graphql/fragments/order.fragment.ts +1 -0
- package/src/graphql/mutations/refundOrder.mutation.ts +13 -0
- package/src/graphql/queries/order.query.ts +11 -0
- package/src/interfaces/IOrder.ts +1 -0
- package/src/interfaces/IOrderQuery.ts +1 -0
- package/src/interfaces/IRefundModal.ts +1 -0
- package/src/interfaces/ISeason.ts +1 -0
- package/src/proto/email.proto +11 -0
- package/src/proto/event.proto +1 -0
- package/src/proto/order.proto +4 -0
- package/src/schemas/Order.ts +3 -0
- package/src/utils/AnalyticsUtil.ts +141 -58
- package/src/utils/PaymentUtil.ts +19 -93
package/src/proto/email.proto
CHANGED
|
@@ -108,6 +108,8 @@ message QueueOrderReceiptEmailRequest {
|
|
|
108
108
|
repeated dayIdsTimeObj dayIdsTimeCalendar = 34;
|
|
109
109
|
string ticketDeliveryType = 35;
|
|
110
110
|
string physicalDeliveryInstructions = 36;
|
|
111
|
+
string promoterFee = 37;
|
|
112
|
+
string processingFee = 38;
|
|
111
113
|
}
|
|
112
114
|
|
|
113
115
|
message QueueOrderQRCodeEmailRequest {
|
|
@@ -147,6 +149,8 @@ message QueueOrderQRCodeEmailRequest {
|
|
|
147
149
|
repeated dayIdsTimeObj dayIdsTimeCalendar = 33;
|
|
148
150
|
string ticketDeliveryType = 34;
|
|
149
151
|
string physicalDeliveryInstructions = 35;
|
|
152
|
+
string promoterFee = 36;
|
|
153
|
+
string processingFee = 37;
|
|
150
154
|
}
|
|
151
155
|
|
|
152
156
|
message QueueSeasonOrderReceiptEmailRequest {
|
|
@@ -185,6 +189,8 @@ message QueueSeasonOrderReceiptEmailRequest {
|
|
|
185
189
|
repeated dayIdsTimeObj dayIdsTime = 32;
|
|
186
190
|
repeated dayIdsTimeObj dayIdsTimeCalendar = 33;
|
|
187
191
|
repeated Event events = 34;
|
|
192
|
+
string promoterFee = 35;
|
|
193
|
+
string processingFee = 36;
|
|
188
194
|
}
|
|
189
195
|
|
|
190
196
|
message QueueOrderRefundEmailRequest {
|
|
@@ -218,6 +224,10 @@ message QueueOrderRefundEmailRequest {
|
|
|
218
224
|
string refundReason = 27;
|
|
219
225
|
repeated dayIdsTimeObj dayIdsTime = 28;
|
|
220
226
|
repeated dayIdsTimeObj dayIdsTimeCalendar = 29;
|
|
227
|
+
string timezone = 30;
|
|
228
|
+
string promoterFee = 31;
|
|
229
|
+
string processingFee = 32;
|
|
230
|
+
string tax = 33;
|
|
221
231
|
// string ticketDeliveryType = 30;
|
|
222
232
|
// string physicalDeliveryInstructions = 31;
|
|
223
233
|
}
|
|
@@ -253,6 +263,7 @@ message QueueOrderCanceledEmailRequest {
|
|
|
253
263
|
string refundReason = 27;
|
|
254
264
|
repeated dayIdsTimeObj dayIdsTime = 28;
|
|
255
265
|
repeated dayIdsTimeObj dayIdsTimeCalendar = 29;
|
|
266
|
+
string timezone = 30;
|
|
256
267
|
}
|
|
257
268
|
|
|
258
269
|
|
package/src/proto/event.proto
CHANGED
package/src/proto/order.proto
CHANGED
|
@@ -40,6 +40,7 @@ message Order {
|
|
|
40
40
|
bool printed = 29;
|
|
41
41
|
string parentSeasonOrderId = 30;
|
|
42
42
|
repeated orderFees fees = 31;
|
|
43
|
+
ProcessingFees promoterFee = 32;
|
|
43
44
|
}
|
|
44
45
|
message ProcessingFees {
|
|
45
46
|
Refund refund = 0;
|
|
@@ -304,6 +305,8 @@ message RefundOrderRequest {
|
|
|
304
305
|
string refundReason = 7;
|
|
305
306
|
bool processingFee = 8;
|
|
306
307
|
string eventType = 9;
|
|
308
|
+
bool promoterFee = 10;
|
|
309
|
+
|
|
307
310
|
}
|
|
308
311
|
|
|
309
312
|
message RefundOrderResponse {
|
|
@@ -404,6 +407,7 @@ message SendOrderRefundEmailRequest {
|
|
|
404
407
|
repeated string ticketIds = 2;
|
|
405
408
|
repeated string upgradeIds = 3;
|
|
406
409
|
bool processingFee = 4;
|
|
410
|
+
bool promoterFee = 5;
|
|
407
411
|
}
|
|
408
412
|
|
|
409
413
|
message SendOrderRefundEmailResponse {
|
package/src/schemas/Order.ts
CHANGED
|
@@ -33,10 +33,10 @@ const makeCoordinates = (
|
|
|
33
33
|
) => {
|
|
34
34
|
const { startDate, intervalLength, intervalNum, interval } = intervalInfo;
|
|
35
35
|
|
|
36
|
-
const coordinates =
|
|
36
|
+
const coordinates = makeArray(intervalNum).map((_, index) => {
|
|
37
37
|
// set x to beginning second of interval
|
|
38
38
|
let x: number;
|
|
39
|
-
switch(interval) {
|
|
39
|
+
switch (interval) {
|
|
40
40
|
case AnalyticsIntervalEnum.Hour:
|
|
41
41
|
x = Time.getStartOfHour(index * intervalLength + startDate);
|
|
42
42
|
break;
|
|
@@ -57,11 +57,13 @@ const makeCoordinates = (
|
|
|
57
57
|
break;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
const
|
|
60
|
+
const filteredOrder = orders
|
|
61
61
|
.filter((order) => {
|
|
62
62
|
const createdAt = order.createdAt as number;
|
|
63
63
|
return x <= createdAt && createdAt < x + intervalLength;
|
|
64
|
-
})
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
const y = sumFn(filteredOrder);
|
|
65
67
|
|
|
66
68
|
return {
|
|
67
69
|
x,
|
|
@@ -155,13 +157,13 @@ const getIntervalFromDuration = (duration: number): AnalyticsIntervalEnum => {
|
|
|
155
157
|
const maxWeek = maxDuration(AnalyticsIntervalEnum.Week);
|
|
156
158
|
const maxMonth = maxDuration(AnalyticsIntervalEnum.Month);
|
|
157
159
|
|
|
158
|
-
if(duration <= maxHour) {
|
|
160
|
+
if (duration <= maxHour) {
|
|
159
161
|
return AnalyticsIntervalEnum.Hour;
|
|
160
|
-
} else if(duration <= maxDay) {
|
|
162
|
+
} else if (duration <= maxDay) {
|
|
161
163
|
return AnalyticsIntervalEnum.Day;
|
|
162
|
-
} else if(duration <= maxWeek) {
|
|
164
|
+
} else if (duration <= maxWeek) {
|
|
163
165
|
return AnalyticsIntervalEnum.Week
|
|
164
|
-
} else if(duration <= maxMonth) {
|
|
166
|
+
} else if (duration <= maxMonth) {
|
|
165
167
|
return AnalyticsIntervalEnum.Month;
|
|
166
168
|
} else {
|
|
167
169
|
return AnalyticsIntervalEnum.Year;
|
|
@@ -187,18 +189,18 @@ const getIntervalInfo = (
|
|
|
187
189
|
startDate = startDate || orders[orders.length - 1]?.createdAt as number || Time.getStartOfCurrentDay();
|
|
188
190
|
endDate = endDate || orders[0]?.createdAt as number || Time.getEndOfCurrentDay();
|
|
189
191
|
|
|
190
|
-
if(startDate === endDate) {
|
|
192
|
+
if (startDate === endDate) {
|
|
191
193
|
endDate = Time.getEndOfCurrentDay();
|
|
192
194
|
}
|
|
193
195
|
|
|
194
196
|
const duration = endDate - startDate; // duration in seconds
|
|
195
197
|
const intervalFromDuration = getIntervalFromDuration(duration);
|
|
196
198
|
const intervalOptions = intervalsMap[intervalFromDuration];
|
|
197
|
-
if(!interval) {
|
|
199
|
+
if (!interval) {
|
|
198
200
|
interval = getIntervalFromDuration(duration);
|
|
199
201
|
}
|
|
200
202
|
|
|
201
|
-
if(!intervalOptions.includes(interval)) {
|
|
203
|
+
if (!intervalOptions.includes(interval)) {
|
|
202
204
|
interval = intervalOptions[0];
|
|
203
205
|
}
|
|
204
206
|
|
|
@@ -271,7 +273,7 @@ export default {
|
|
|
271
273
|
label: type,
|
|
272
274
|
interval: interval,
|
|
273
275
|
intervalOptions: [],
|
|
274
|
-
coordinates: [{ x: 0, y: 0}],
|
|
276
|
+
coordinates: [{ x: 0, y: 0 }],
|
|
275
277
|
segments: [],
|
|
276
278
|
type: AnalyticsValueTypeEnum.Quantity,
|
|
277
279
|
} as IAnalytics;
|
|
@@ -283,20 +285,31 @@ export default {
|
|
|
283
285
|
orders: IOrder[],
|
|
284
286
|
intervalInfo: IntervalInfo,
|
|
285
287
|
): IAnalytics {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
288
|
+
|
|
289
|
+
const coordinatesSumFn = (orders: IOrder[]) => orders.reduce((cur, order) => {
|
|
290
|
+
let total = 0
|
|
291
|
+
if (order.type == OrderTypeEnum.RSVP) {
|
|
292
|
+
total = sum(order.tickets.map(ticket => Number(ticket?.values) || 0)) + sum(order.upgrades.map(upgrade => Number(upgrade?.price) || 0))
|
|
293
|
+
} else {
|
|
294
|
+
total = sum(order.tickets.map(ticket => ticket.price)) + sum(order.upgrades.map(upgrade => upgrade.price))
|
|
295
|
+
}
|
|
296
|
+
return cur + total
|
|
297
|
+
}, 0);
|
|
298
|
+
|
|
299
|
+
// const coordinatesSumFn = (orders: IOrder[]) =>
|
|
300
|
+
// orders
|
|
301
|
+
// // .filter(order => order.type === OrderTypeEnum.Paid)
|
|
302
|
+
// .reduce((cur, order) => cur + sum(order.tickets.map(ticket => ticket.price)) + sum(order.upgrades.map(upgrade => upgrade.price)), 0);
|
|
303
|
+
|
|
291
304
|
const coordinates = makeCoordinates(orders, intervalInfo, coordinatesSumFn);
|
|
292
305
|
const { interval, intervalOptions } = intervalInfo;
|
|
293
306
|
|
|
294
307
|
|
|
295
308
|
let segments: IAnalytics[] = [];
|
|
296
309
|
const coordinatesSumFn2 = (orders: IOrder[]) =>
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
310
|
+
orders
|
|
311
|
+
// .filter(order => order.type === OrderTypeEnum.Paid)
|
|
312
|
+
.reduce((cur, order) => cur + order.tickets.length, 0);
|
|
300
313
|
const segmentCoordinates = makeCoordinates(orders, intervalInfo, coordinatesSumFn2);
|
|
301
314
|
let segment: IAnalytics = {
|
|
302
315
|
label: 'Tickets Sold',
|
|
@@ -308,8 +321,8 @@ export default {
|
|
|
308
321
|
};
|
|
309
322
|
segments.push(segment);
|
|
310
323
|
const coordinatesSumFn3 = (orders: IOrder[]) => orders.length//sum(orders.map(order => { return order.state != OrderStateEnum.Refunded ? 1 : 0} ))
|
|
311
|
-
|
|
312
|
-
|
|
324
|
+
// .reduce((cur,order) => cur + sum(order.tickets.map(ticket => { return ticket.refund.refunded == false ? 1 : 0})),0)
|
|
325
|
+
|
|
313
326
|
// const coordinatesSumFn3 = (orders: IOrder[]) => orders.length;
|
|
314
327
|
const segmentCoordinates2 = makeCoordinates(orders, intervalInfo, coordinatesSumFn3);
|
|
315
328
|
segment = {
|
|
@@ -340,10 +353,23 @@ export default {
|
|
|
340
353
|
intervalInfo: IntervalInfo,
|
|
341
354
|
showSegments: boolean,
|
|
342
355
|
): IAnalytics {
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
356
|
+
|
|
357
|
+
const coordinatesSumFn = (orders: IOrder[]) => orders.reduce((cur, order) => {
|
|
358
|
+
let total = 0
|
|
359
|
+
if (order.type == OrderTypeEnum.RSVP) {
|
|
360
|
+
total = sum(order.tickets.map(ticket => Number(ticket?.values) || 0)) + sum(order.upgrades.map(upgrade => Number(upgrade?.price) || 0))
|
|
361
|
+
} else {
|
|
362
|
+
total = sum(order.tickets.map(ticket => ticket.price)) + sum(order.upgrades.map(upgrade => upgrade.price))
|
|
363
|
+
}
|
|
364
|
+
return cur + total
|
|
365
|
+
}, 0);
|
|
366
|
+
|
|
367
|
+
// const coordinatesSumFn = (orders: IOrder[]) =>
|
|
368
|
+
// orders
|
|
369
|
+
// // .filter(order => order.type === OrderTypeEnum.Paid)
|
|
370
|
+
// .reduce((cur, order) => cur + sum(order.tickets.map(ticket => ticket.price)) + sum(order.upgrades.map(upgrade => upgrade.price)), 0);
|
|
371
|
+
|
|
372
|
+
|
|
347
373
|
let segmentTypes;
|
|
348
374
|
let segmentCoordinatesHOSumFn;
|
|
349
375
|
// if (showSegments) {
|
|
@@ -385,10 +411,22 @@ export default {
|
|
|
385
411
|
intervalInfo: IntervalInfo,
|
|
386
412
|
showSegments: boolean,
|
|
387
413
|
): IAnalytics {
|
|
388
|
-
const coordinatesSumFn = (orders: IOrder[]) =>
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
414
|
+
const coordinatesSumFn = (orders: IOrder[]) => orders.reduce((cur, order) => {
|
|
415
|
+
let total = 0
|
|
416
|
+
if (order.type == OrderTypeEnum.RSVP) {
|
|
417
|
+
total = sum(order.tickets.map(ticket => Number(ticket?.values) || 0)) || 0
|
|
418
|
+
// total = sum(order.tickets.map(ticket => Number(ticket?.values)|| 0)) + sum(order.upgrades.map(upgrade => Number(upgrade?.price) || 0))
|
|
419
|
+
} else {
|
|
420
|
+
total = sum(order.tickets.map(ticket => ticket.price))
|
|
421
|
+
}
|
|
422
|
+
return cur + total
|
|
423
|
+
}, 0);
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
// const coordinatesSumFn = (orders: IOrder[]) =>
|
|
427
|
+
// orders
|
|
428
|
+
// // .filter(order => order.type === OrderTypeEnum.Paid)
|
|
429
|
+
// .reduce((cur, order) => cur + sum(order.tickets.map(ticket => ticket.price)), 0);
|
|
392
430
|
|
|
393
431
|
let segmentTypes;
|
|
394
432
|
let segmentCoordinatesHOSumFn;
|
|
@@ -404,13 +442,29 @@ export default {
|
|
|
404
442
|
}, {})
|
|
405
443
|
);
|
|
406
444
|
|
|
407
|
-
segmentCoordinatesHOSumFn = (segmentType: string) => (orders: IOrder[]) =>
|
|
408
|
-
orders
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
445
|
+
segmentCoordinatesHOSumFn = (segmentType: string) => (orders: IOrder[]) => {
|
|
446
|
+
// const ordersData = orders
|
|
447
|
+
// // .filter(order => order.type === OrderTypeEnum.Paid)
|
|
448
|
+
// .reduce((cur, order) => cur + sum(
|
|
449
|
+
// order.tickets
|
|
450
|
+
// .filter((ticket) => ticket.name === segmentType)
|
|
451
|
+
// .map((ticket) => ticket.price)), 0);
|
|
452
|
+
|
|
453
|
+
// return ordersData
|
|
454
|
+
// }
|
|
455
|
+
|
|
456
|
+
const ordersData = orders.reduce((cur, order) => {
|
|
457
|
+
let total;
|
|
458
|
+
if (order.type == OrderTypeEnum.RSVP) {
|
|
459
|
+
total = sum(order.tickets.filter((ticket) => ticket.name === segmentType).map(ticket => Number(ticket?.values) || 0))
|
|
460
|
+
} else {
|
|
461
|
+
total = sum(order.tickets.filter((ticket) => ticket.name === segmentType).map(ticket => Number(ticket?.price) || 0))
|
|
462
|
+
}
|
|
463
|
+
return cur + total
|
|
464
|
+
}, 0);
|
|
465
|
+
return ordersData
|
|
466
|
+
}
|
|
467
|
+
|
|
414
468
|
}
|
|
415
469
|
|
|
416
470
|
return makeAnalytics(
|
|
@@ -581,12 +635,12 @@ export default {
|
|
|
581
635
|
return cur;
|
|
582
636
|
}, {})
|
|
583
637
|
);
|
|
584
|
-
|
|
638
|
+
|
|
585
639
|
segmentCoordinatesHOSumFn = (segmentType: string) => (orders: IOrder[]) =>
|
|
586
640
|
orders
|
|
587
641
|
// .filter(order => order.type === OrderTypeEnum.Paid)
|
|
588
642
|
.reduce((cur, order) =>
|
|
589
|
-
cur + order.upgrades.filter((upgrade) => upgrade.name === segmentType
|
|
643
|
+
cur + order.upgrades.filter((upgrade) => upgrade.name === segmentType).length, 0);
|
|
590
644
|
}
|
|
591
645
|
|
|
592
646
|
return makeAnalytics(
|
|
@@ -606,11 +660,25 @@ export default {
|
|
|
606
660
|
intervalInfo: IntervalInfo,
|
|
607
661
|
showSegments: boolean,
|
|
608
662
|
): IAnalytics {
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
663
|
+
|
|
664
|
+
const coordinatesSumFn = (orders: IOrder[]) => orders.reduce((cur, order) => {
|
|
665
|
+
let total = 0
|
|
666
|
+
if (order.type == OrderTypeEnum.RSVP) {
|
|
667
|
+
total = sum(order.upgrades.map(upgrade => Number(upgrade?.price) || 0))
|
|
668
|
+
// total = sum(order.tickets.map(ticket => Number(ticket?.values)|| 0)) + sum(order.upgrades.map(upgrade => Number(upgrade?.price) || 0))
|
|
669
|
+
} else {
|
|
670
|
+
total = sum(order.upgrades.map(upgrade => upgrade.price))
|
|
671
|
+
// total = sum(order.tickets.map(ticket => ticket.price)) + sum(order.upgrades.map(upgrade => upgrade.price))
|
|
672
|
+
}
|
|
673
|
+
return cur + total
|
|
674
|
+
}, 0);
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
// const coordinatesSumFn = (orders: IOrder[]) =>
|
|
678
|
+
// orders
|
|
679
|
+
// .reduce((cur, order) =>
|
|
680
|
+
// cur + order.upgrades.filter(upgrade => upgrade.price === 0).length,
|
|
681
|
+
// 0);
|
|
614
682
|
|
|
615
683
|
let segmentTypes;
|
|
616
684
|
let segmentCoordinatesHOSumFn;
|
|
@@ -625,7 +693,7 @@ export default {
|
|
|
625
693
|
return cur;
|
|
626
694
|
}, {})
|
|
627
695
|
);
|
|
628
|
-
|
|
696
|
+
|
|
629
697
|
segmentCoordinatesHOSumFn = (segmentType: string) => (orders: IOrder[]) =>
|
|
630
698
|
orders
|
|
631
699
|
.reduce((cur, order) =>
|
|
@@ -710,16 +778,30 @@ export default {
|
|
|
710
778
|
segmentTypes = [EventAnalyticsEnum.SoldOutPercentage, EventAnalyticsEnum.TotalSales];
|
|
711
779
|
|
|
712
780
|
segmentCoordinatesHOSumFn = (segmentType: string) => (orders: IOrder[]) => {
|
|
713
|
-
switch(segmentType) {
|
|
781
|
+
switch (segmentType) {
|
|
714
782
|
case EventAnalyticsEnum.SoldOutPercentage:
|
|
715
783
|
return 0;
|
|
716
784
|
case EventAnalyticsEnum.TotalSales:
|
|
717
|
-
return orders
|
|
785
|
+
return calculateTotalSale(orders)
|
|
786
|
+
|
|
787
|
+
// orders.reduce((cur: number, next: IOrder) => cur + next?.payments?.[0]?.transferAmount ?? 0, 0)
|
|
718
788
|
}
|
|
719
789
|
}
|
|
720
790
|
}
|
|
721
791
|
|
|
722
|
-
|
|
792
|
+
|
|
793
|
+
const calculateTotalSale = (orders) => orders
|
|
794
|
+
.reduce((cur, order) => {
|
|
795
|
+
let total = 0
|
|
796
|
+
if (order.type == OrderTypeEnum.RSVP) {
|
|
797
|
+
total = sum(order.tickets.map(ticket => Number(ticket?.values) || 0)) + sum(order.upgrades.map(upgrade => Number(upgrade?.price) || 0))
|
|
798
|
+
} else {
|
|
799
|
+
total = sum(order.tickets.map(ticket => ticket.price)) + sum(order.upgrades.map(upgrade => upgrade.price))
|
|
800
|
+
}
|
|
801
|
+
return cur + total
|
|
802
|
+
}, 0);
|
|
803
|
+
|
|
804
|
+
const data = makeAnalytics(
|
|
723
805
|
type,
|
|
724
806
|
orders,
|
|
725
807
|
intervalInfo,
|
|
@@ -728,6 +810,7 @@ export default {
|
|
|
728
810
|
segmentTypes,
|
|
729
811
|
segmentCoordinatesHOSumFn
|
|
730
812
|
);
|
|
813
|
+
return data
|
|
731
814
|
},
|
|
732
815
|
userAnalytics(
|
|
733
816
|
type: AnalyticsTypeEnum,
|
|
@@ -744,8 +827,8 @@ export default {
|
|
|
744
827
|
let segmentCoordinatesHOSumFn;
|
|
745
828
|
if (showSegments) {
|
|
746
829
|
segmentTypes = [
|
|
747
|
-
UserAnalyticsEnum.EventsAttendedCount,
|
|
748
|
-
UserAnalyticsEnum.TicketsPurchasedCount,
|
|
830
|
+
UserAnalyticsEnum.EventsAttendedCount,
|
|
831
|
+
UserAnalyticsEnum.TicketsPurchasedCount,
|
|
749
832
|
UserAnalyticsEnum.LifeTimeValue
|
|
750
833
|
];
|
|
751
834
|
|
|
@@ -757,7 +840,7 @@ export default {
|
|
|
757
840
|
return orders.reduce((cur: number, next: IOrder) => cur + next.tickets.length ?? 0, 0);
|
|
758
841
|
case UserAnalyticsEnum.LifeTimeValue:
|
|
759
842
|
return orders.reduce((cur: number, next: IOrder) => cur + next.payments?.[0]?.transferAmount ?? 0, 0);
|
|
760
|
-
|
|
843
|
+
|
|
761
844
|
}
|
|
762
845
|
}
|
|
763
846
|
}
|
|
@@ -880,19 +963,19 @@ export default {
|
|
|
880
963
|
},
|
|
881
964
|
|
|
882
965
|
getDateFormat(time: any, interval: AnalyticsIntervalEnum, timezone: string = 'America/Denver') {
|
|
883
|
-
switch(interval) {
|
|
966
|
+
switch (interval) {
|
|
884
967
|
case AnalyticsIntervalEnum.Hour:
|
|
885
|
-
return Time.format(time, 'h:mma',timezone);
|
|
968
|
+
return Time.format(time, 'h:mma', timezone);
|
|
886
969
|
case AnalyticsIntervalEnum.Day:
|
|
887
|
-
return Time.format(time, 'MMM DD',timezone);
|
|
970
|
+
return Time.format(time, 'MMM DD', timezone);
|
|
888
971
|
case AnalyticsIntervalEnum.Week:
|
|
889
|
-
return `${Time.format(time, 'MMM DD',timezone)} - ${Time.format(time + (Time.DAY * 7), 'MMM DD',timezone)}`;
|
|
972
|
+
return `${Time.format(time, 'MMM DD', timezone)} - ${Time.format(time + (Time.DAY * 7), 'MMM DD', timezone)}`;
|
|
890
973
|
case AnalyticsIntervalEnum.Month:
|
|
891
|
-
return Time.format(time, 'MMM YYYY',timezone);
|
|
974
|
+
return Time.format(time, 'MMM YYYY', timezone);
|
|
892
975
|
case AnalyticsIntervalEnum.Year:
|
|
893
|
-
return Time.format(time, 'YYYY',timezone);
|
|
976
|
+
return Time.format(time, 'YYYY', timezone);
|
|
894
977
|
default:
|
|
895
|
-
return Time.format(time, 'MMM DD',timezone);
|
|
978
|
+
return Time.format(time, 'MMM DD', timezone);
|
|
896
979
|
}
|
|
897
980
|
},
|
|
898
981
|
|
package/src/utils/PaymentUtil.ts
CHANGED
|
@@ -252,11 +252,7 @@ class PaymentUtil {
|
|
|
252
252
|
const totalTicketAndUpgrades = ticketTotal + upgradeTotal
|
|
253
253
|
|
|
254
254
|
const promoterFeeFlatPerOrderTotal = promoterOrderFees.reduce((acc, fee: any) => {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
return acc + getFeeAmount(fee)
|
|
258
|
-
}
|
|
259
|
-
return acc
|
|
255
|
+
return fee.type == FeeTypeEnum.Flat ? (acc + getFeeAmount(fee)) : acc
|
|
260
256
|
}, 0)
|
|
261
257
|
|
|
262
258
|
const promoterFeeFlatPerTicketTotal = tickets.reduce((cur, ticket) => {
|
|
@@ -391,10 +387,10 @@ class PaymentUtil {
|
|
|
391
387
|
selloutFeeFlatPerOrderAmt +
|
|
392
388
|
selloutSeatedFeeAmt + ticketGuestFeeTotalForSellout + SelloutFeeFlatPerUpgradeTotal
|
|
393
389
|
)
|
|
394
|
-
|
|
395
390
|
const preStripeTotal = promoterTotal + selloutFeesTotal
|
|
396
391
|
|
|
397
392
|
let stripeFeeAmt = 0
|
|
393
|
+
|
|
398
394
|
const stripeFeePercentage = stripeFees.find(fee => fee.type == FeeTypeEnum.Percent)?.value || 0
|
|
399
395
|
const stripeFeeFlat = stripeFees.find(fee => fee.type == FeeTypeEnum.Flat)?.value || 0
|
|
400
396
|
stripeFeeAmt = (preStripeTotal + (stripeFeeFlat)) / (1 - (stripeFeePercentage / 100)) - preStripeTotal
|
|
@@ -452,20 +448,6 @@ class PaymentUtil {
|
|
|
452
448
|
return 0;
|
|
453
449
|
}
|
|
454
450
|
|
|
455
|
-
// depricated
|
|
456
|
-
|
|
457
|
-
// function applyOrderFee(orderSubtotal, fee) {
|
|
458
|
-
// if (fee.type === FeeTypeEnum.Flat) {
|
|
459
|
-
// return fee.value
|
|
460
|
-
// // return orderSubtotal + fee.value;
|
|
461
|
-
// }
|
|
462
|
-
// if (fee.type === FeeTypeEnum.Percent) {
|
|
463
|
-
// // return orderSubtotal / (1 - fee.value / 100);
|
|
464
|
-
// return orderSubtotal * (fee.value / 100);
|
|
465
|
-
|
|
466
|
-
// }
|
|
467
|
-
// }
|
|
468
|
-
|
|
469
451
|
// return Calculated fees amount based on type
|
|
470
452
|
function getFeeAmount(fee, amt = 0) {
|
|
471
453
|
if (fee.type === FeeTypeEnum.Flat) {
|
|
@@ -475,79 +457,22 @@ class PaymentUtil {
|
|
|
475
457
|
return amt * (fee.value / 100);
|
|
476
458
|
}
|
|
477
459
|
}
|
|
478
|
-
|
|
479
|
-
// function applySelloutFee(amt, fee) {
|
|
480
|
-
// if (fee.type === FeeTypeEnum.Flat) {
|
|
481
|
-
// return amt + fee.value;
|
|
482
|
-
// }
|
|
483
|
-
// if (fee.type === FeeTypeEnum.Percent) {
|
|
484
|
-
// // return amt / (1 - fee.value / 100);
|
|
485
|
-
// return amt * (fee.value / 100);
|
|
486
|
-
// }
|
|
487
|
-
// }
|
|
488
|
-
// let totconsole.log(toto)o = preStripeTotal + stripeFeeAmt;
|
|
489
|
-
|
|
490
|
-
// return Math.round(preStripeTotal + stripeFeeAmt);
|
|
491
460
|
let promoterFeeAmount = promoterFeeFlatPerTicketTotal + promoterFeeFlatPerOrderTotal + promoterFeePercentPerTicketTotal +
|
|
492
461
|
promoterFeePercentPerOrder + ticketGuestFeeTotalForPromoter + promoterFeeFlatPerUpgradeTotal;
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
total
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
let total = {
|
|
465
|
+
salesTax: Math.round(salesTaxAmount || 0),
|
|
466
|
+
total: Math.round((preStripeTotal + stripeFeeAmt) || 0),
|
|
467
|
+
promoterFees: Math.round((promoterFeeAmount) || 0),
|
|
468
|
+
stripeFees: Math.round(stripeFeeAmt || 0),
|
|
469
|
+
selloutFees: Math.round(selloutFeesTotal || 0),
|
|
470
|
+
orderSubtotal: Math.round(orderSubtotal || 0),
|
|
471
|
+
subTotal: Math.round(totalTicketAndUpgrades || 0),
|
|
472
|
+
totalFees: Math.round((promoterFeeAmount + stripeFeeAmt + selloutFeesTotal + salesTaxAmount) || 0),
|
|
473
|
+
totalWithoutTaxFees: Math.round((promoterFeeAmount + stripeFeeAmt + selloutFeesTotal) || 0)
|
|
503
474
|
}
|
|
504
475
|
return total
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
// const ticketTaxFeeTotal = tickets.reduce((cur, ticket) => {
|
|
508
|
-
// return (
|
|
509
|
-
// cur +
|
|
510
|
-
// salesTax.reduce((cur, fee) => {
|
|
511
|
-
// const value = cur + applyTicketFee(ticket, fee);
|
|
512
|
-
// return value;
|
|
513
|
-
// }, 0)
|
|
514
|
-
// );
|
|
515
|
-
// }, 0);
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
// const upgradeTaxFeeTotal = upgrades.reduce((cur, upgrade) => {
|
|
524
|
-
// return (
|
|
525
|
-
// cur +
|
|
526
|
-
// salesTax.reduce((curr, fee) => curr + applyUpgradeFee(upgrade, fee), 0)
|
|
527
|
-
// );
|
|
528
|
-
// }, 0);
|
|
529
|
-
|
|
530
|
-
// const upgradeFeeTotal = upgrades.reduce((cur, upgrade) => {
|
|
531
|
-
// return (
|
|
532
|
-
// cur +
|
|
533
|
-
// upgradeFees.reduce((cur, fee) => cur + applyUpgradeFee(upgrade, fee), 0)
|
|
534
|
-
// );
|
|
535
|
-
// }, 0);
|
|
536
|
-
|
|
537
|
-
// const promoterFeeFlatPerOrder = promoterOrderFees.reduce((cur, fee) => {
|
|
538
|
-
// return applyOrderFee(cur, fee);
|
|
539
|
-
// }, ticketTotal + upgradeTotal);
|
|
540
|
-
|
|
541
|
-
// console.log(promoterOrderTotal)
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
// Applying sellout fees
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
// applying sales tax fees
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
// return Math.round(orderTotal);
|
|
551
476
|
}
|
|
552
477
|
|
|
553
478
|
|
|
@@ -600,10 +525,11 @@ class PaymentUtil {
|
|
|
600
525
|
return Math.round(total - subtotal);
|
|
601
526
|
}
|
|
602
527
|
|
|
603
|
-
calculateFeeWithoutTax(params: IPaymentCalculatorParams):
|
|
604
|
-
const total = this.calculatePaymentTotal(params)
|
|
605
|
-
let subtotal = this.calculatePaymentSubtotal(params);
|
|
606
|
-
return Math.round(total - subtotal);
|
|
528
|
+
calculateFeeWithoutTax(params: IPaymentCalculatorParams): any {
|
|
529
|
+
const total = this.calculatePaymentTotal(params);
|
|
530
|
+
// let subtotal = this.calculatePaymentSubtotal(params);
|
|
531
|
+
// return Math.round(total - subtotal);
|
|
532
|
+
return total
|
|
607
533
|
}
|
|
608
534
|
calculateOrganizationFee(params: IPaymentCalculatorParams): number {
|
|
609
535
|
let { tickets = [], upgrades = [], fees = [], paymentMethodType } = params;
|