@sellout/models 0.0.148 → 0.0.150
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/event.fragment.js +2 -0
- package/.dist/graphql/fragments/event.fragment.js.map +1 -1
- package/.dist/graphql/fragments/order.fragment.js +2 -0
- package/.dist/graphql/fragments/order.fragment.js.map +1 -1
- package/.dist/graphql/mutations/breakApartOrder.js +1 -0
- package/.dist/graphql/mutations/breakApartOrder.js.map +1 -1
- package/.dist/graphql/mutations/createEvent.mutation.js +2 -0
- package/.dist/graphql/mutations/createEvent.mutation.js.map +1 -1
- package/.dist/graphql/mutations/publishEvent.mutation.js +2 -0
- package/.dist/graphql/mutations/publishEvent.mutation.js.map +1 -1
- package/.dist/graphql/mutations/sendUserPhoneAuthentication.mutation.js +2 -2
- package/.dist/graphql/mutations/updateEvent.mutation.js +2 -0
- package/.dist/graphql/mutations/updateEvent.mutation.js.map +1 -1
- package/.dist/graphql/queries/event.query.js +2 -0
- package/.dist/graphql/queries/event.query.js.map +1 -1
- package/.dist/graphql/queries/events.query.js +2 -0
- package/.dist/graphql/queries/events.query.js.map +1 -1
- package/.dist/graphql/queries/order.query.js +2 -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/graphql/queries/promoCodeVerify.query.js +1 -0
- package/.dist/graphql/queries/promoCodeVerify.query.js.map +1 -1
- package/.dist/graphql/queries/publicEvent.query.js +2 -0
- package/.dist/graphql/queries/publicEvent.query.js.map +1 -1
- package/.dist/interfaces/ICreateOrderParams.d.ts +3 -0
- package/.dist/interfaces/IEvent.d.ts +2 -0
- package/.dist/interfaces/IEvent.js.map +1 -1
- package/.dist/interfaces/IOrderSummary.d.ts +1 -0
- package/.dist/interfaces/IOrderTicket.d.ts +2 -1
- package/.dist/interfaces/IOrderTicket.js.map +1 -1
- package/.dist/interfaces/IPerformance.d.ts +2 -1
- package/.dist/interfaces/IScan.d.ts +1 -0
- package/.dist/interfaces/ITicketType.d.ts +3 -0
- package/.dist/schemas/Event.d.ts +33 -2
- package/.dist/schemas/Event.js +33 -11
- package/.dist/schemas/Event.js.map +1 -1
- package/.dist/schemas/Order.d.ts +15 -1
- package/.dist/schemas/Order.js +12 -3
- package/.dist/schemas/Order.js.map +1 -1
- package/.dist/sellout-proto.js +957 -36
- package/.dist/utils/EventUtil.d.ts +2 -1
- package/.dist/utils/EventUtil.js +87 -7
- package/.dist/utils/EventUtil.js.map +1 -1
- package/.dist/utils/OrderUtil.js +3 -1
- package/.dist/utils/OrderUtil.js.map +1 -1
- package/package.json +3 -3
- package/src/graphql/fragments/event.fragment.ts +2 -0
- package/src/graphql/fragments/order.fragment.ts +2 -0
- package/src/graphql/mutations/breakApartOrder.ts +1 -0
- package/src/graphql/mutations/createEvent.mutation.ts +2 -0
- package/src/graphql/mutations/publishEvent.mutation.ts +2 -0
- package/src/graphql/mutations/sendUserPhoneAuthentication.mutation.ts +2 -2
- package/src/graphql/mutations/updateEvent.mutation.ts +2 -0
- package/src/graphql/queries/event.query.ts +2 -0
- package/src/graphql/queries/events.query.ts +2 -0
- package/src/graphql/queries/order.query.ts +2 -0
- package/src/graphql/queries/orders.query.ts +1 -0
- package/src/graphql/queries/promoCodeVerify.query.ts +1 -0
- package/src/graphql/queries/publicEvent.query.ts +2 -0
- package/src/interfaces/ICreateOrderParams.ts +4 -0
- package/src/interfaces/IEvent.ts +4 -2
- package/src/interfaces/IOrderSummary.ts +1 -0
- package/src/interfaces/IOrderTicket.ts +2 -1
- package/src/interfaces/IPerformance.ts +2 -1
- package/src/interfaces/IScan.ts +1 -0
- package/src/interfaces/ITicketType.ts +4 -1
- package/src/proto/email.proto +21 -0
- package/src/proto/event.proto +5 -1
- package/src/proto/order.proto +4 -1
- package/src/proto/user.proto +1 -0
- package/src/schemas/Event.ts +25 -3
- package/src/schemas/Order.ts +12 -3
- package/src/utils/EventUtil.ts +113 -23
- package/src/utils/OrderUtil.ts +96 -94
package/src/utils/OrderUtil.ts
CHANGED
|
@@ -20,115 +20,115 @@ export default {
|
|
|
20
20
|
Order
|
|
21
21
|
*****************************************************************************************/
|
|
22
22
|
orderTotal(order: IOrder, fees: any[]): number {
|
|
23
|
-
if(order.payments && order.payments.length > 0) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
23
|
+
if (order.payments && order.payments.length > 0) {
|
|
24
|
+
return order.payments.reduce((cur: number, payment: IPayment): number => {
|
|
25
|
+
return cur + PaymentUtil.calculatePaymentTotal({
|
|
26
|
+
tickets: order.tickets.filter(ticket => ticket.paymentId === payment._id),
|
|
27
|
+
upgrades: order.upgrades.filter(upgrade => upgrade.paymentId === payment._id),
|
|
28
|
+
fees: fees,
|
|
29
|
+
paymentMethodType: payment.paymentMethodType,
|
|
30
|
+
})
|
|
31
|
+
}, 0);
|
|
32
|
+
} else {
|
|
33
|
+
if (
|
|
34
|
+
(!order.tickets || !order.tickets.length) &&
|
|
35
|
+
(!order.upgrades || !order.upgrades.length)
|
|
36
|
+
)
|
|
37
|
+
return 0;
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
if (!order.tickets) order.tickets = [];
|
|
40
|
+
if (!order.upgrades) order.upgrades = [];
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
const ticketFees = fees.filter(f => f.appliedTo === "Ticket");
|
|
43
|
+
const upgradeFees = fees.filter(f => f.appliedTo === "Upgrade");
|
|
44
|
+
let orderFees = fees.filter(f => f.appliedTo === "Order");
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
46
|
+
function applyTicketFee(ticket, fee) {
|
|
47
|
+
if (fee.filters.includes("Seated") && !ticket.seat) return 0;
|
|
48
|
+
const noMax = fee.maxAppliedToPrice === 0;
|
|
49
|
+
if (
|
|
50
|
+
(fee.minAppliedToPrice <= ticket.price &&
|
|
51
|
+
ticket.price <= fee.maxAppliedToPrice) ||
|
|
52
|
+
noMax
|
|
53
|
+
) {
|
|
54
|
+
if (fee.type === "Flat") {
|
|
55
|
+
return fee.value;
|
|
56
|
+
}
|
|
57
|
+
if (fee.type === "Percent") {
|
|
58
|
+
return (ticket.price * fee.value) / 100;
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
return 0;
|
|
56
62
|
}
|
|
57
|
-
|
|
58
|
-
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function applyUpgradeFee(upgrade, fee) {
|
|
66
|
+
const noMax = fee.maxAppliedToPrice === 0;
|
|
67
|
+
if (
|
|
68
|
+
(fee.minAppliedToPrice <= upgrade.price &&
|
|
69
|
+
upgrade.price <= fee.minAppliedToPrice) ||
|
|
70
|
+
noMax
|
|
71
|
+
) {
|
|
72
|
+
if (fee.type === "Flat") {
|
|
73
|
+
return fee.value;
|
|
74
|
+
}
|
|
75
|
+
if (fee.type === "Percent") {
|
|
76
|
+
return (upgrade.price * fee.value) / 100;
|
|
77
|
+
}
|
|
78
|
+
} else {
|
|
79
|
+
return 0;
|
|
59
80
|
}
|
|
60
|
-
} else {
|
|
61
|
-
return 0;
|
|
62
81
|
}
|
|
63
|
-
}
|
|
64
82
|
|
|
65
|
-
|
|
66
|
-
const noMax = fee.maxAppliedToPrice === 0;
|
|
67
|
-
if (
|
|
68
|
-
(fee.minAppliedToPrice <= upgrade.price &&
|
|
69
|
-
upgrade.price <= fee.minAppliedToPrice) ||
|
|
70
|
-
noMax
|
|
71
|
-
) {
|
|
83
|
+
function applyOrderFee(orderSubtotal, fee) {
|
|
72
84
|
if (fee.type === "Flat") {
|
|
73
|
-
return fee.value;
|
|
85
|
+
return orderSubtotal + fee.value;
|
|
74
86
|
}
|
|
75
87
|
if (fee.type === "Percent") {
|
|
76
|
-
return (
|
|
88
|
+
return orderSubtotal / (1 - fee.value / 100);
|
|
77
89
|
}
|
|
78
|
-
} else {
|
|
79
|
-
return 0;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
function applyOrderFee(orderSubtotal, fee) {
|
|
84
|
-
if (fee.type === "Flat") {
|
|
85
|
-
return orderSubtotal + fee.value;
|
|
86
|
-
}
|
|
87
|
-
if (fee.type === "Percent") {
|
|
88
|
-
return orderSubtotal / (1 - fee.value / 100);
|
|
89
90
|
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const ticketTotal = order.tickets.reduce(
|
|
93
|
-
(cur, ticket) => cur + ticket.price,
|
|
94
|
-
0
|
|
95
|
-
);
|
|
96
91
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
ticketFees.reduce((cur, fee) => cur + applyTicketFee(ticket, fee), 0)
|
|
92
|
+
const ticketTotal = order.tickets.reduce(
|
|
93
|
+
(cur, ticket) => cur + ticket.price,
|
|
94
|
+
0
|
|
101
95
|
);
|
|
102
|
-
}, 0);
|
|
103
96
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
97
|
+
const ticketFeeTotal = order.tickets.reduce((cur, ticket) => {
|
|
98
|
+
return (
|
|
99
|
+
cur +
|
|
100
|
+
ticketFees.reduce((cur, fee) => cur + applyTicketFee(ticket, fee), 0)
|
|
101
|
+
);
|
|
102
|
+
}, 0);
|
|
108
103
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
upgradeFees.reduce((cur, fee) => cur + applyUpgradeFee(upgrade, fee), 0)
|
|
104
|
+
const upgradeTotal = order.upgrades.reduce(
|
|
105
|
+
(cur, upgrade) => cur + upgrade.price,
|
|
106
|
+
0
|
|
113
107
|
);
|
|
114
|
-
}, 0);
|
|
115
108
|
|
|
116
|
-
|
|
117
|
-
|
|
109
|
+
const upgradeFeeTotal = order.upgrades.reduce((cur, upgrade) => {
|
|
110
|
+
return (
|
|
111
|
+
cur +
|
|
112
|
+
upgradeFees.reduce((cur, fee) => cur + applyUpgradeFee(upgrade, fee), 0)
|
|
113
|
+
);
|
|
114
|
+
}, 0);
|
|
118
115
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
orderFees = orderFees.sort(({ type }) => {
|
|
122
|
-
if (type === "Flat") return -1;
|
|
123
|
-
return 1;
|
|
124
|
-
});
|
|
116
|
+
const orderSubtotal =
|
|
117
|
+
ticketTotal + ticketFeeTotal + upgradeTotal + upgradeFeeTotal;
|
|
125
118
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
119
|
+
// Order matters here. Flat type fees must be
|
|
120
|
+
// applied before Percent type fees
|
|
121
|
+
orderFees = orderFees.sort(({ type }) => {
|
|
122
|
+
if (type === "Flat") return -1;
|
|
123
|
+
return 1;
|
|
124
|
+
});
|
|
129
125
|
|
|
130
|
-
|
|
131
|
-
|
|
126
|
+
const orderTotal = orderFees.reduce((cur, fee) => {
|
|
127
|
+
return applyOrderFee(cur, fee);
|
|
128
|
+
}, orderSubtotal);
|
|
129
|
+
|
|
130
|
+
return Math.round(orderTotal);
|
|
131
|
+
}
|
|
132
132
|
},
|
|
133
133
|
orderTotalWithRefund(order, fees) {
|
|
134
134
|
return this.orderTotal(order, fees) - (order.refundedAmount || 0);
|
|
@@ -202,7 +202,9 @@ export default {
|
|
|
202
202
|
const subtotal = this.orderSubtotal(order);
|
|
203
203
|
const selloutFees = this.selloutFees(order, fees);
|
|
204
204
|
const promoterFees = this.promoterFees(order, fees);
|
|
205
|
-
|
|
205
|
+
let stripeFee = total - subtotal - selloutFees - promoterFees;
|
|
206
|
+
let stripeFeeT = stripeFee < 0 ? 0 : stripeFee;
|
|
207
|
+
return stripeFeeT;
|
|
206
208
|
},
|
|
207
209
|
promoterFees(order, fees) {
|
|
208
210
|
if (!order.tickets) order.tickets = [];
|
|
@@ -305,9 +307,9 @@ export default {
|
|
|
305
307
|
/*****************************************************************************************
|
|
306
308
|
Custom Field
|
|
307
309
|
*****************************************************************************************/
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
310
|
+
customField(order: IOrder | ICreateOrderParams, eventCustomFieldId: string): IOrderCustomField | null {
|
|
311
|
+
return order?.customFields?.find(
|
|
312
|
+
(customField) => customField.customFieldId === eventCustomFieldId
|
|
313
|
+
) ?? null;
|
|
314
|
+
}
|
|
313
315
|
};
|