@sellout/models 0.0.187-alpha.0 → 0.0.187
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/mutations/generateActivityReport.mutation.d.ts +2 -0
- package/.dist/graphql/mutations/generateActivityReport.mutation.js +18 -0
- package/.dist/graphql/mutations/generateActivityReport.mutation.js.map +1 -0
- package/.dist/graphql/mutations/sendSeasonOrderReceiptEmail.mutation.d.ts +2 -0
- package/.dist/graphql/mutations/sendSeasonOrderReceiptEmail.mutation.js +13 -0
- package/.dist/graphql/mutations/sendSeasonOrderReceiptEmail.mutation.js.map +1 -0
- package/.dist/graphql/queries/order.query.js +1 -0
- package/.dist/graphql/queries/order.query.js.map +1 -1
- package/.dist/graphql/queries/orders.query.js +1 -0
- package/.dist/graphql/queries/orders.query.js.map +1 -1
- package/.dist/interfaces/ICreateOrderParams.d.ts +2 -0
- package/.dist/interfaces/IFee.d.ts +1 -0
- package/.dist/interfaces/IOrder.d.ts +2 -1
- package/.dist/interfaces/IOrder.js.map +1 -1
- package/.dist/interfaces/IOrderSummary.d.ts +1 -0
- package/.dist/schemas/Order.d.ts +81 -0
- package/.dist/schemas/Order.js +81 -0
- package/.dist/schemas/Order.js.map +1 -1
- package/.dist/sellout-proto.js +1014 -118
- package/.dist/utils/OrderUtil.js +111 -195
- package/.dist/utils/OrderUtil.js.map +1 -1
- package/.dist/utils/PaymentUtil.d.ts +2 -2
- package/.dist/utils/PaymentUtil.js +190 -198
- package/.dist/utils/PaymentUtil.js.map +1 -1
- package/package.json +3 -3
- package/src/graphql/mutations/generateActivityReport.mutation.ts +14 -0
- package/src/graphql/mutations/sendSeasonOrderReceiptEmail.mutation.ts +9 -0
- package/src/graphql/queries/order.query.ts +1 -0
- package/src/graphql/queries/orders.query.ts +1 -0
- package/src/interfaces/ICreateOrderParams.ts +2 -0
- package/src/interfaces/IFee.ts +2 -0
- package/src/interfaces/IOrder.ts +2 -1
- package/src/interfaces/IOrderSummary.ts +1 -0
- package/src/proto/email.proto +0 -2
- package/src/proto/event.proto +0 -3
- package/src/proto/fee.proto +1 -0
- package/src/proto/order.proto +35 -1
- package/src/schemas/Order.ts +81 -0
- package/src/utils/OrderUtil.ts +128 -219
- package/src/utils/PaymentUtil.ts +243 -269
|
@@ -4,6 +4,7 @@ import { OrderChannelEnum } from "../enums/OrderChannelEnum";
|
|
|
4
4
|
import { PaymentMethodTypeEnum } from "../enums/PaymentMethodTypeEnum";
|
|
5
5
|
import IScan from "../interfaces/IScan";
|
|
6
6
|
import ITeiMemberInfo from "./ITeiMemberInfo";
|
|
7
|
+
import IFee from "./IFee";
|
|
7
8
|
|
|
8
9
|
export default interface ICreateOrderParams {
|
|
9
10
|
userId: string;
|
|
@@ -12,6 +13,7 @@ export default interface ICreateOrderParams {
|
|
|
12
13
|
seasonId?: string;
|
|
13
14
|
tickets: ICreateOrderTicketParams[];
|
|
14
15
|
upgrades: ICreateOrderUpgradeParams[];
|
|
16
|
+
fees?: IFee[];
|
|
15
17
|
type: OrderTypeEnum;
|
|
16
18
|
channel: OrderChannelEnum;
|
|
17
19
|
promotionCode: string;
|
package/src/interfaces/IFee.ts
CHANGED
package/src/interfaces/IOrder.ts
CHANGED
|
@@ -25,6 +25,7 @@ export default interface IOrder {
|
|
|
25
25
|
venueIds: string[];
|
|
26
26
|
artistIds: string[];
|
|
27
27
|
feeIds: string[]; // BACKFILL
|
|
28
|
+
fees: IFee[];
|
|
28
29
|
stripeChargeId?: string; // BACKFILL
|
|
29
30
|
tickets: IOrderTicket[];
|
|
30
31
|
upgrades: IOrderUpgrade[];
|
|
@@ -60,7 +61,7 @@ export interface ISeasonGraphQL extends ISeason {
|
|
|
60
61
|
|
|
61
62
|
export interface IOrderGraphQL extends IOrder {
|
|
62
63
|
user: IUser;
|
|
63
|
-
fees: IFee;
|
|
64
|
+
fees: IFee[];
|
|
64
65
|
event: IEventGraphQL;
|
|
65
66
|
season: ISeasonGraphQL;
|
|
66
67
|
};
|
|
@@ -22,6 +22,7 @@ export default interface IOrderSummary {
|
|
|
22
22
|
selloutFee: number | string;
|
|
23
23
|
stripeFee: number | string;
|
|
24
24
|
promoterFee: number | string;
|
|
25
|
+
salesTaxFee: number | string;
|
|
25
26
|
createdAt: number | string;
|
|
26
27
|
allTickets:IOrderSummaryItem[];
|
|
27
28
|
tickets: IOrderSummaryItem[];
|
package/src/proto/email.proto
CHANGED
|
@@ -218,7 +218,6 @@ message QueueOrderRefundEmailRequest {
|
|
|
218
218
|
string refundReason = 27;
|
|
219
219
|
repeated dayIdsTimeObj dayIdsTime = 28;
|
|
220
220
|
repeated dayIdsTimeObj dayIdsTimeCalendar = 29;
|
|
221
|
-
string timezone = 30;
|
|
222
221
|
// string ticketDeliveryType = 30;
|
|
223
222
|
// string physicalDeliveryInstructions = 31;
|
|
224
223
|
}
|
|
@@ -254,7 +253,6 @@ message QueueOrderCanceledEmailRequest {
|
|
|
254
253
|
string refundReason = 27;
|
|
255
254
|
repeated dayIdsTimeObj dayIdsTime = 28;
|
|
256
255
|
repeated dayIdsTimeObj dayIdsTimeCalendar = 29;
|
|
257
|
-
string timezone = 30;
|
|
258
256
|
}
|
|
259
257
|
|
|
260
258
|
|
package/src/proto/event.proto
CHANGED
|
@@ -72,8 +72,6 @@ message PublicEvent {
|
|
|
72
72
|
int32 endsAt = 23;
|
|
73
73
|
string venue = 24;
|
|
74
74
|
string status = 25;
|
|
75
|
-
string venueTimezone = 26;
|
|
76
|
-
int32 announceAt = 27;
|
|
77
75
|
}
|
|
78
76
|
|
|
79
77
|
message PublicEventDetails {
|
|
@@ -306,7 +304,6 @@ message QueryEventsResponse {
|
|
|
306
304
|
|
|
307
305
|
message QueryEventsListRequest {
|
|
308
306
|
string spanContext = 0;
|
|
309
|
-
string orgId = 1;
|
|
310
307
|
}
|
|
311
308
|
|
|
312
309
|
|
package/src/proto/fee.proto
CHANGED
package/src/proto/order.proto
CHANGED
|
@@ -39,6 +39,7 @@ message Order {
|
|
|
39
39
|
bool hidden = 28;
|
|
40
40
|
bool printed = 29;
|
|
41
41
|
string parentSeasonOrderId = 30;
|
|
42
|
+
repeated orderFees fees = 31;
|
|
42
43
|
}
|
|
43
44
|
message ProcessingFees {
|
|
44
45
|
Refund refund = 0;
|
|
@@ -67,6 +68,28 @@ message OrderTicket {
|
|
|
67
68
|
bool guestTicket = 18;
|
|
68
69
|
}
|
|
69
70
|
|
|
71
|
+
message orderFees {
|
|
72
|
+
string _id = 0;
|
|
73
|
+
string name = 1;
|
|
74
|
+
string orgId = 2;
|
|
75
|
+
string eventId = 3;
|
|
76
|
+
string type = 4;
|
|
77
|
+
double value = 5;
|
|
78
|
+
string appliedTo = 6;
|
|
79
|
+
string appliedBy = 7;
|
|
80
|
+
int32 minAppliedToPrice = 8;
|
|
81
|
+
int32 maxAppliedToPrice = 9;
|
|
82
|
+
repeated string filters = 10;
|
|
83
|
+
string createdBy = 11;
|
|
84
|
+
int32 createdAt = 12;
|
|
85
|
+
string updatedBy = 13;
|
|
86
|
+
int32 updatedAt = 14;
|
|
87
|
+
bool disabled = 15;
|
|
88
|
+
string seasonId = 16;
|
|
89
|
+
string amount = 17;
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
70
93
|
message TeiMemberInfoParams {
|
|
71
94
|
string firstName = 0;
|
|
72
95
|
string lastName = 1;
|
|
@@ -475,6 +498,14 @@ message FindOrderByEventIdResponse{
|
|
|
475
498
|
int32 ticketUnscanned = 5;
|
|
476
499
|
}
|
|
477
500
|
|
|
501
|
+
message FindEventOrderCountResponse{
|
|
502
|
+
StatusCode status = 0;
|
|
503
|
+
repeated Error errors = 1;
|
|
504
|
+
int32 eventOrderCount = 2;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
|
|
478
509
|
message FindOrderByFeeIdRequest {
|
|
479
510
|
string spanContext = 0;
|
|
480
511
|
string feeId = 1;
|
|
@@ -607,6 +638,7 @@ message GetPromoUsedResponse {
|
|
|
607
638
|
}
|
|
608
639
|
|
|
609
640
|
|
|
641
|
+
|
|
610
642
|
service OrderService {
|
|
611
643
|
// Create
|
|
612
644
|
rpc createOrder(CreateOrderRequest) returns (CreateOrderResponse) {}
|
|
@@ -615,7 +647,7 @@ service OrderService {
|
|
|
615
647
|
rpc createSeasonOrderPaymentIntent(CreateSeasonOrderPaymentIntentRequest) returns (CreateOrderPaymentIntentResponse) {}
|
|
616
648
|
// QR Code
|
|
617
649
|
rpc sendOrderQRCodeEmail(SendOrderQRCodeEmailRequest) returns (SendOrderQRCodeEmailResponse) {}
|
|
618
|
-
rpc sendSeasonOrderReceiptEmail(
|
|
650
|
+
rpc sendSeasonOrderReceiptEmail(SendOrderReceiptEmailRequest) returns (SendOrderReceiptEmailResponse) {}
|
|
619
651
|
rpc sendOrderReceiptEmail(SendOrderReceiptEmailRequest) returns (SendOrderReceiptEmailResponse) {}
|
|
620
652
|
rpc sendOrderRefundEmail(SendOrderRefundEmailRequest) returns (SendOrderRefundEmailResponse) {}
|
|
621
653
|
rpc resendOrderRefundEmail(SendOrderRefundEmailRequest) returns (SendOrderRefundEmailResponse) {}
|
|
@@ -636,9 +668,11 @@ service OrderService {
|
|
|
636
668
|
// Report
|
|
637
669
|
rpc generateOrderReport(GenerateOrderReportRequest) returns (GenerateOrderReportResponse) {}
|
|
638
670
|
// Find
|
|
671
|
+
rpc generateActivityReport(GenerateOrderReportRequest) returns (GenerateOrderReportResponse) {}
|
|
639
672
|
rpc queryOrders(QueryOrdersRequest) returns (QueryOrdersResponse) {}
|
|
640
673
|
rpc findOrderById(FindOrderByIdRequest) returns (FindOrderByIdResponse) {}
|
|
641
674
|
rpc findOrderByEventId(FindOrderByEventIdRequest) returns (FindOrderByEventIdResponse) {}
|
|
675
|
+
rpc eventOrderCount(FindOrderByEventIdRequest) returns (FindEventOrderCountResponse) {}
|
|
642
676
|
rpc findOrderByFeeId(FindOrderByFeeIdRequest) returns (FindOrderByIdResponse) {}
|
|
643
677
|
rpc findOrderByEmail(FindOrderByEmailRequest) returns (FindOrderByEmailResponse) {}
|
|
644
678
|
rpc queryOrderAnalytics(QueryOrderAnalyticsRequest) returns (QueryOrderAnalyticsResponse) {}
|
package/src/schemas/Order.ts
CHANGED
|
@@ -46,6 +46,86 @@ const Scan = {
|
|
|
46
46
|
required: false,
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
|
+
const Fees = {
|
|
50
|
+
_id: {
|
|
51
|
+
type: String,
|
|
52
|
+
required: false,
|
|
53
|
+
},
|
|
54
|
+
name: {
|
|
55
|
+
type: String,
|
|
56
|
+
required: false,
|
|
57
|
+
},
|
|
58
|
+
orgId: {
|
|
59
|
+
type: String,
|
|
60
|
+
required: false,
|
|
61
|
+
default: null,
|
|
62
|
+
},
|
|
63
|
+
eventId: {
|
|
64
|
+
type: String,
|
|
65
|
+
required: false,
|
|
66
|
+
default: null,
|
|
67
|
+
}, seasonId: {
|
|
68
|
+
type: String,
|
|
69
|
+
required: false,
|
|
70
|
+
default: null,
|
|
71
|
+
},
|
|
72
|
+
type: {
|
|
73
|
+
type: String,
|
|
74
|
+
required: false,
|
|
75
|
+
},
|
|
76
|
+
value: {
|
|
77
|
+
type: Number,
|
|
78
|
+
required: false,
|
|
79
|
+
},
|
|
80
|
+
appliedTo: {
|
|
81
|
+
type: String,
|
|
82
|
+
required: false,
|
|
83
|
+
},
|
|
84
|
+
appliedBy: {
|
|
85
|
+
type: String,
|
|
86
|
+
required: false,
|
|
87
|
+
},
|
|
88
|
+
minAppliedToPrice: {
|
|
89
|
+
type: Number,
|
|
90
|
+
required: false,
|
|
91
|
+
default: null,
|
|
92
|
+
},
|
|
93
|
+
maxAppliedToPrice: {
|
|
94
|
+
type: Number,
|
|
95
|
+
required: false,
|
|
96
|
+
default: null,
|
|
97
|
+
},
|
|
98
|
+
filters: [{
|
|
99
|
+
type: String,
|
|
100
|
+
required: false,
|
|
101
|
+
default: [],
|
|
102
|
+
}],
|
|
103
|
+
createdBy: {
|
|
104
|
+
type: String,
|
|
105
|
+
required: false,
|
|
106
|
+
},
|
|
107
|
+
createdAt: {
|
|
108
|
+
type: Number,
|
|
109
|
+
required: false,
|
|
110
|
+
},
|
|
111
|
+
updatedBy: {
|
|
112
|
+
type: String,
|
|
113
|
+
required: false,
|
|
114
|
+
},
|
|
115
|
+
updatedAt: {
|
|
116
|
+
type: Number,
|
|
117
|
+
required: false,
|
|
118
|
+
},
|
|
119
|
+
disabled: {
|
|
120
|
+
type: Boolean,
|
|
121
|
+
required: false,
|
|
122
|
+
default: false,
|
|
123
|
+
},
|
|
124
|
+
amount: {
|
|
125
|
+
type: String,
|
|
126
|
+
required: false,
|
|
127
|
+
},
|
|
128
|
+
};
|
|
49
129
|
const TeiMemberInfoInput = {
|
|
50
130
|
firstName: {
|
|
51
131
|
type: String,
|
|
@@ -311,6 +391,7 @@ export default {
|
|
|
311
391
|
required: false,
|
|
312
392
|
},
|
|
313
393
|
tickets: [OrderTicket],
|
|
394
|
+
fees: [Fees],
|
|
314
395
|
upgrades: [OrderUpgrade],
|
|
315
396
|
recipientEmails: [{
|
|
316
397
|
type: String,
|
package/src/utils/OrderUtil.ts
CHANGED
|
@@ -28,7 +28,7 @@ export default {
|
|
|
28
28
|
upgrades: order.upgrades.filter(upgrade => upgrade.paymentId === payment._id),
|
|
29
29
|
fees: fees,
|
|
30
30
|
paymentMethodType: payment.paymentMethodType,
|
|
31
|
-
})
|
|
31
|
+
}).total || 0;
|
|
32
32
|
}, 0);
|
|
33
33
|
} else {
|
|
34
34
|
if (
|
|
@@ -40,212 +40,124 @@ export default {
|
|
|
40
40
|
if (!order.tickets) order.tickets = [];
|
|
41
41
|
if (!order.upgrades) order.upgrades = [];
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
43
|
+
// console.log("order ++++++++++>>>",order);
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
// const ticketFees = fees.filter(f => f.appliedTo === "Ticket");
|
|
47
|
+
// const upgradeFees = fees.filter(f => f.appliedTo === "Upgrade");
|
|
48
|
+
// let orderFees = fees.filter(f => f.appliedTo === "Order");
|
|
49
|
+
|
|
50
|
+
// function applyTicketFee(ticket, fee) {
|
|
51
|
+
// if (fee.filters.includes("Seated") && !ticket.seat) return 0;
|
|
52
|
+
// const noMax = fee.maxAppliedToPrice === 0;
|
|
53
|
+
// if (
|
|
54
|
+
// (fee.minAppliedToPrice <= ticket.price &&
|
|
55
|
+
// ticket.price <= fee.maxAppliedToPrice) ||
|
|
56
|
+
// noMax
|
|
57
|
+
// ) {
|
|
58
|
+
// if (fee.type === "Flat") {
|
|
59
|
+
// return fee.value;
|
|
60
|
+
// }
|
|
61
|
+
// if (fee.type === "Percent") {
|
|
62
|
+
// return (ticket.price * fee.value) / 100;
|
|
63
|
+
// }
|
|
64
|
+
// } else {
|
|
65
|
+
// return 0;
|
|
66
|
+
// }
|
|
67
|
+
// }
|
|
68
|
+
|
|
69
|
+
// function applyUpgradeFee(upgrade, fee) {
|
|
70
|
+
// const noMax = fee.maxAppliedToPrice === 0;
|
|
71
|
+
// if (
|
|
72
|
+
// (fee.minAppliedToPrice <= upgrade.price &&
|
|
73
|
+
// upgrade.price <= fee.minAppliedToPrice) ||
|
|
74
|
+
// noMax
|
|
75
|
+
// ) {
|
|
76
|
+
// if (fee.type === "Flat") {
|
|
77
|
+
// return fee.value;
|
|
78
|
+
// }
|
|
79
|
+
// if (fee.type === "Percent") {
|
|
80
|
+
// return (upgrade.price * fee.value) / 100;
|
|
81
|
+
// }
|
|
82
|
+
// } else {
|
|
83
|
+
// return 0;
|
|
84
|
+
// }
|
|
85
|
+
// }
|
|
86
|
+
|
|
87
|
+
// function applyOrderFee(orderSubtotal, fee) {
|
|
88
|
+
// if (fee.type === "Flat") {
|
|
89
|
+
// return orderSubtotal + fee.value;
|
|
90
|
+
// }
|
|
91
|
+
// if (fee.type === "Percent") {
|
|
92
|
+
// return orderSubtotal / (1 - fee.value / 100);
|
|
93
|
+
// }
|
|
94
|
+
// }
|
|
95
|
+
|
|
96
|
+
// const ticketTotal = order.tickets.reduce(
|
|
97
|
+
// (cur, ticket) => cur + ticket.price,
|
|
98
|
+
// 0
|
|
99
|
+
// );
|
|
100
|
+
|
|
101
|
+
// const ticketFeeTotal = order.tickets.reduce((cur, ticket) => {
|
|
102
|
+
// return (
|
|
103
|
+
// cur +
|
|
104
|
+
// ticketFees.reduce((cur, fee) => cur + applyTicketFee(ticket, fee), 0)
|
|
105
|
+
// );
|
|
106
|
+
// }, 0);
|
|
107
|
+
|
|
108
|
+
// const upgradeTotal = order.upgrades.reduce(
|
|
109
|
+
// (cur, upgrade) => cur + upgrade.price,
|
|
110
|
+
// 0
|
|
111
|
+
// );
|
|
112
|
+
|
|
113
|
+
// const upgradeFeeTotal = order.upgrades.reduce((cur, upgrade) => {
|
|
114
|
+
// return (
|
|
115
|
+
// cur +
|
|
116
|
+
// upgradeFees.reduce((cur, fee) => cur + applyUpgradeFee(upgrade, fee), 0)
|
|
117
|
+
// );
|
|
118
|
+
// }, 0);
|
|
119
|
+
// const orderSubtotal =
|
|
120
|
+
// ticketTotal + ticketFeeTotal + upgradeTotal + upgradeFeeTotal;
|
|
121
|
+
|
|
122
|
+
// // Order matters here. Flat type fees must be
|
|
123
|
+
// // applied before Percent type fees
|
|
124
|
+
// orderFees = orderFees.sort(({ type }) => {
|
|
125
|
+
// if (type === "Flat") return -1;
|
|
126
|
+
// return 1;
|
|
127
|
+
// });
|
|
128
|
+
|
|
129
|
+
// const orderTotal = orderFees.reduce((cur, fee) => {
|
|
130
|
+
// return applyOrderFee(cur, fee);
|
|
131
|
+
// }, orderSubtotal) || 0;
|
|
132
|
+
|
|
133
|
+
// console.log("orderTotal orderTotal+++++>>",orderTotal );
|
|
134
|
+
|
|
135
|
+
// return Math.round(orderTotal);
|
|
83
136
|
|
|
84
|
-
function applyOrderFee(orderSubtotal, fee) {
|
|
85
|
-
if (fee.type === "Flat") {
|
|
86
|
-
return orderSubtotal + fee.value;
|
|
87
|
-
}
|
|
88
|
-
if (fee.type === "Percent") {
|
|
89
|
-
return orderSubtotal / (1 - fee.value / 100);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
137
|
|
|
93
138
|
const ticketTotal = order.tickets.reduce(
|
|
94
139
|
(cur, ticket) => cur + ticket.price,
|
|
95
140
|
0
|
|
96
141
|
);
|
|
97
142
|
|
|
98
|
-
const ticketFeeTotal = order.tickets.reduce((cur, ticket) => {
|
|
99
|
-
return (
|
|
100
|
-
cur +
|
|
101
|
-
ticketFees.reduce((cur, fee) => cur + applyTicketFee(ticket, fee), 0)
|
|
102
|
-
);
|
|
103
|
-
}, 0);
|
|
104
|
-
|
|
105
143
|
const upgradeTotal = order.upgrades.reduce(
|
|
106
144
|
(cur, upgrade) => cur + upgrade.price,
|
|
107
145
|
0
|
|
108
146
|
);
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}, 0);
|
|
147
|
+
// console.log("++++>>>>>>/ fees", fees)
|
|
148
|
+
const totalFee = fees.reduce(
|
|
149
|
+
(cur, fee) => cur + parseInt(fee.amount),
|
|
150
|
+
0
|
|
151
|
+
);
|
|
152
|
+
// console.log("++++>>>>>>", ticketTotal, upgradeTotal, totalFee)
|
|
116
153
|
const orderSubtotal =
|
|
117
|
-
ticketTotal +
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
// applied before Percent type fees
|
|
121
|
-
orderFees = orderFees.sort(({ type }) => {
|
|
122
|
-
if (type === "Flat") return -1;
|
|
123
|
-
return 1;
|
|
124
|
-
});
|
|
154
|
+
ticketTotal + upgradeTotal + totalFee;
|
|
155
|
+
// console.log("++++",orderSubtotal)
|
|
156
|
+
return Math.round(orderSubtotal);
|
|
125
157
|
|
|
126
|
-
const orderTotal = orderFees.reduce((cur, fee) => {
|
|
127
|
-
return applyOrderFee(cur, fee);
|
|
128
|
-
}, orderSubtotal);
|
|
129
|
-
|
|
130
|
-
return Math.round(orderTotal);
|
|
131
158
|
}
|
|
132
159
|
},
|
|
133
160
|
|
|
134
|
-
// orderTotalExport(order: IOrder, fees: any[]): number {
|
|
135
|
-
// if (order?.payments && order?.payments.length > 0) {
|
|
136
|
-
// return order.payments.reduce((cur: number, payment: IPayment): number => {
|
|
137
|
-
// const paymentTickets = order.tickets.filter(ticket => ticket.paymentId === payment._id)
|
|
138
|
-
// const paymentUpgrades = order.upgrades.filter(upgrade => upgrade.paymentId === payment._id)
|
|
139
|
-
// const total = PaymentUtil.calculatePaymentTotalDublicate({
|
|
140
|
-
// tickets: paymentTickets,
|
|
141
|
-
// upgrades: paymentUpgrades,
|
|
142
|
-
// fees: fees,
|
|
143
|
-
// paymentMethodType: payment.paymentMethodType,
|
|
144
|
-
// })
|
|
145
|
-
// return cur + total
|
|
146
|
-
// }, 0);
|
|
147
|
-
// } else {
|
|
148
|
-
// if (
|
|
149
|
-
// (!order.tickets || !order.tickets.length) &&
|
|
150
|
-
// (!order.upgrades || !order.upgrades.length)
|
|
151
|
-
// )
|
|
152
|
-
// return 0;
|
|
153
|
-
|
|
154
|
-
// if (!order.tickets) order.tickets = [];
|
|
155
|
-
// if (!order.upgrades) order.upgrades = [];
|
|
156
|
-
|
|
157
|
-
// const ticketFees = fees.filter(f => f.appliedTo === "Ticket");
|
|
158
|
-
// const upgradeFees = fees.filter(f => f.appliedTo === "Upgrade");
|
|
159
|
-
// let orderFees = fees.filter(f => f.appliedTo === "Order");
|
|
160
|
-
|
|
161
|
-
// function applyTicketFee(ticket, fee) {
|
|
162
|
-
// if (fee.filters.includes("Seated") && !ticket.seat) return 0;
|
|
163
|
-
// const noMax = fee.maxAppliedToPrice === 0;
|
|
164
|
-
// if (
|
|
165
|
-
// (fee.minAppliedToPrice <= ticket.price &&
|
|
166
|
-
// ticket.price <= fee.maxAppliedToPrice) ||
|
|
167
|
-
// noMax
|
|
168
|
-
// ) {
|
|
169
|
-
// if (fee.type === "Flat") {
|
|
170
|
-
// return fee.value;
|
|
171
|
-
// }
|
|
172
|
-
// if (fee.type === "Percent") {
|
|
173
|
-
// return (ticket.price * fee.value) / 100;
|
|
174
|
-
// }
|
|
175
|
-
// } else {
|
|
176
|
-
// return 0;
|
|
177
|
-
// }
|
|
178
|
-
// }
|
|
179
|
-
|
|
180
|
-
// function applyUpgradeFee(upgrade, fee) {
|
|
181
|
-
// const noMax = fee.maxAppliedToPrice === 0;
|
|
182
|
-
// if (
|
|
183
|
-
// (fee.minAppliedToPrice <= upgrade.price &&
|
|
184
|
-
// upgrade.price <= fee.minAppliedToPrice) ||
|
|
185
|
-
// noMax
|
|
186
|
-
// ) {
|
|
187
|
-
// if (fee.type === "Flat") {
|
|
188
|
-
// return fee.value;
|
|
189
|
-
// }
|
|
190
|
-
// if (fee.type === "Percent") {
|
|
191
|
-
// return (upgrade.price * fee.value) / 100;
|
|
192
|
-
// }
|
|
193
|
-
// } else {
|
|
194
|
-
// return 0;
|
|
195
|
-
// }
|
|
196
|
-
// }
|
|
197
|
-
|
|
198
|
-
// function applyOrderFee(orderSubtotal, fee) {
|
|
199
|
-
// if (fee.type === "Flat") {
|
|
200
|
-
// return orderSubtotal + fee.value;
|
|
201
|
-
// }
|
|
202
|
-
// if (fee.type === "Percent") {
|
|
203
|
-
// return orderSubtotal / (1 - fee.value / 100);
|
|
204
|
-
// }
|
|
205
|
-
// }
|
|
206
|
-
|
|
207
|
-
// const ticketTotal = order.tickets.reduce(
|
|
208
|
-
// (cur, ticket) => cur + ticket.price,
|
|
209
|
-
// 0
|
|
210
|
-
// );
|
|
211
|
-
|
|
212
|
-
// const ticketFeeTotal = order.tickets.reduce((cur, ticket) => {
|
|
213
|
-
// return (
|
|
214
|
-
// cur +
|
|
215
|
-
// ticketFees.reduce((cur, fee) => cur + applyTicketFee(ticket, fee), 0)
|
|
216
|
-
// );
|
|
217
|
-
// }, 0);
|
|
218
|
-
|
|
219
|
-
// const upgradeTotal = order.upgrades.reduce(
|
|
220
|
-
// (cur, upgrade) => cur + upgrade.price,
|
|
221
|
-
// 0
|
|
222
|
-
// );
|
|
223
|
-
|
|
224
|
-
// const upgradeFeeTotal = order.upgrades.reduce((cur, upgrade) => {
|
|
225
|
-
// return (
|
|
226
|
-
// cur +
|
|
227
|
-
// upgradeFees.reduce((cur, fee) => cur + applyUpgradeFee(upgrade, fee), 0)
|
|
228
|
-
// );
|
|
229
|
-
// }, 0);
|
|
230
|
-
// const orderSubtotal =
|
|
231
|
-
// ticketTotal + ticketFeeTotal + upgradeTotal + upgradeFeeTotal;
|
|
232
|
-
|
|
233
|
-
// // Order matters here. Flat type fees must be
|
|
234
|
-
// // applied before Percent type fees
|
|
235
|
-
// orderFees = orderFees.sort(({ type }) => {
|
|
236
|
-
// if (type === "Flat") return -1;
|
|
237
|
-
// return 1;
|
|
238
|
-
// });
|
|
239
|
-
|
|
240
|
-
// const orderTotal = orderFees.reduce((cur, fee) => {
|
|
241
|
-
// return applyOrderFee(cur, fee);
|
|
242
|
-
// }, orderSubtotal);
|
|
243
|
-
|
|
244
|
-
// return Math.round(orderTotal);
|
|
245
|
-
// }
|
|
246
|
-
// },
|
|
247
|
-
|
|
248
|
-
|
|
249
161
|
|
|
250
162
|
guestFees(order: IOrder, fees: IFee[]): any {
|
|
251
163
|
let guestTicketFees = fees.find(
|
|
@@ -290,23 +202,37 @@ export default {
|
|
|
290
202
|
const orderTotal = this.orderTotal(order, fees);
|
|
291
203
|
return orderTotal - (order.refundedAmount || 0);
|
|
292
204
|
},
|
|
293
|
-
// orderExportTotalWithRefund(order, fees) {
|
|
294
|
-
// const orderTotal = this.orderTotalExport(order, fees);
|
|
295
|
-
// return orderTotal - (order.refundedAmount || 0);
|
|
296
|
-
// },
|
|
297
205
|
orderTransferAmountWithRefund(order, fees) {
|
|
298
206
|
const promoterFees = FeeUtil.promoterFees(fees);
|
|
299
207
|
return this.orderTotalWithRefund(order, promoterFees);
|
|
300
208
|
},
|
|
301
209
|
orderSubtotal(order: IOrder): number {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
210
|
+
let subTotal;
|
|
211
|
+
if (order.payments) {
|
|
212
|
+
subTotal = order?.payments?.reduce((cur: number, payment: IPayment): number => {
|
|
213
|
+
return cur + PaymentUtil.calculatePaymentSubtotal({
|
|
214
|
+
tickets: order.tickets.filter(ticket => ticket.paymentId === payment._id),
|
|
215
|
+
upgrades: order.upgrades.filter(upgrade => upgrade.paymentId === payment._id),
|
|
216
|
+
fees: [],
|
|
217
|
+
paymentMethodType: payment.paymentMethodType,
|
|
218
|
+
})
|
|
219
|
+
}, 0);
|
|
220
|
+
} else {
|
|
221
|
+
subTotal = PaymentUtil.calculatePaymentSubtotalValue({
|
|
222
|
+
tickets: order.tickets,
|
|
223
|
+
upgrades: order.upgrades
|
|
308
224
|
})
|
|
309
|
-
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
// order?.payments?.reduce((cur: number, payment: IPayment): number => {
|
|
229
|
+
// return cur + PaymentUtil.calculatePaymentSubtotal({
|
|
230
|
+
// tickets: order.tickets.filter(ticket => ticket.paymentId === payment._id),
|
|
231
|
+
// upgrades: order.upgrades.filter(upgrade => upgrade.paymentId === payment._id),
|
|
232
|
+
// fees: [],
|
|
233
|
+
// paymentMethodType: payment.paymentMethodType,
|
|
234
|
+
// })
|
|
235
|
+
// }, 0);
|
|
310
236
|
|
|
311
237
|
return subTotal || 0
|
|
312
238
|
},
|
|
@@ -357,12 +283,6 @@ export default {
|
|
|
357
283
|
return this.orderTotal(order, fees) - this.orderSubtotal(order);
|
|
358
284
|
},
|
|
359
285
|
|
|
360
|
-
// selloutExortFees(order, fees) {
|
|
361
|
-
// if (!order.tickets) order.tickets = [];
|
|
362
|
-
// if (!order.upgrades) order.upgrades = [];
|
|
363
|
-
// fees = FeeUtil.selloutFees(fees);
|
|
364
|
-
// return this.orderTotalExport(order, fees) - this.orderSubtotal(order);
|
|
365
|
-
// },
|
|
366
286
|
// This one is special because stripe fees
|
|
367
287
|
// can be applied as a percentage
|
|
368
288
|
stripeFees(order, fees) {
|
|
@@ -377,17 +297,6 @@ export default {
|
|
|
377
297
|
return stripeFeeT;
|
|
378
298
|
},
|
|
379
299
|
|
|
380
|
-
// stripeFeesExport(order, fees) {
|
|
381
|
-
// if (!order.tickets) order.tickets = [];
|
|
382
|
-
// if (!order.upgrades) order.upgrades = [];
|
|
383
|
-
// const total = this.orderTotalExport(order, fees);
|
|
384
|
-
// const subtotal = this.orderSubtotal(order);
|
|
385
|
-
// const selloutFees = this.selloutExortFees(order, fees);
|
|
386
|
-
// const promoterFees = this.promoterFees(order, fees);
|
|
387
|
-
// let stripeFee = total - subtotal - selloutFees - promoterFees;
|
|
388
|
-
// let stripeFeeT = stripeFee < 0 ? 0 : stripeFee;
|
|
389
|
-
// return stripeFeeT;
|
|
390
|
-
// },
|
|
391
300
|
promoterFees(order, fees) {
|
|
392
301
|
if (!order.tickets) order.tickets = [];
|
|
393
302
|
if (!order.upgrades) order.upgrades = [];
|