@sellout/models 0.0.184 → 0.0.185
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/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/interfaces/ICreateOrderParams.d.ts +2 -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 +628 -6
- package/.dist/utils/OrderUtil.js +1 -123
- package/.dist/utils/OrderUtil.js.map +1 -1
- package/.dist/utils/PaymentUtil.d.ts +1 -2
- package/.dist/utils/PaymentUtil.js +180 -198
- package/.dist/utils/PaymentUtil.js.map +1 -1
- package/package.json +3 -3
- package/src/graphql/mutations/sendSeasonOrderReceiptEmail.mutation.ts +9 -0
- package/src/interfaces/ICreateOrderParams.ts +2 -0
- package/src/interfaces/IOrder.ts +2 -1
- package/src/interfaces/IOrderSummary.ts +1 -0
- package/src/proto/order.proto +24 -1
- package/src/schemas/Order.ts +81 -0
- package/src/utils/OrderUtil.ts +1 -137
- package/src/utils/PaymentUtil.ts +221 -269
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
|
+
int32 amount = 17;
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
70
93
|
message TeiMemberInfoParams {
|
|
71
94
|
string firstName = 0;
|
|
72
95
|
string lastName = 1;
|
|
@@ -615,7 +638,7 @@ service OrderService {
|
|
|
615
638
|
rpc createSeasonOrderPaymentIntent(CreateSeasonOrderPaymentIntentRequest) returns (CreateOrderPaymentIntentResponse) {}
|
|
616
639
|
// QR Code
|
|
617
640
|
rpc sendOrderQRCodeEmail(SendOrderQRCodeEmailRequest) returns (SendOrderQRCodeEmailResponse) {}
|
|
618
|
-
rpc sendSeasonOrderReceiptEmail(
|
|
641
|
+
rpc sendSeasonOrderReceiptEmail(SendOrderReceiptEmailRequest) returns (SendOrderReceiptEmailResponse) {}
|
|
619
642
|
rpc sendOrderReceiptEmail(SendOrderReceiptEmailRequest) returns (SendOrderReceiptEmailResponse) {}
|
|
620
643
|
rpc sendOrderRefundEmail(SendOrderRefundEmailRequest) returns (SendOrderRefundEmailResponse) {}
|
|
621
644
|
rpc resendOrderRefundEmail(SendOrderRefundEmailRequest) returns (SendOrderRefundEmailResponse) {}
|
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: Number,
|
|
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
|
|
32
32
|
}, 0);
|
|
33
33
|
} else {
|
|
34
34
|
if (
|
|
@@ -131,121 +131,6 @@ export default {
|
|
|
131
131
|
}
|
|
132
132
|
},
|
|
133
133
|
|
|
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
134
|
|
|
250
135
|
guestFees(order: IOrder, fees: IFee[]): any {
|
|
251
136
|
let guestTicketFees = fees.find(
|
|
@@ -290,10 +175,6 @@ export default {
|
|
|
290
175
|
const orderTotal = this.orderTotal(order, fees);
|
|
291
176
|
return orderTotal - (order.refundedAmount || 0);
|
|
292
177
|
},
|
|
293
|
-
// orderExportTotalWithRefund(order, fees) {
|
|
294
|
-
// const orderTotal = this.orderTotalExport(order, fees);
|
|
295
|
-
// return orderTotal - (order.refundedAmount || 0);
|
|
296
|
-
// },
|
|
297
178
|
orderTransferAmountWithRefund(order, fees) {
|
|
298
179
|
const promoterFees = FeeUtil.promoterFees(fees);
|
|
299
180
|
return this.orderTotalWithRefund(order, promoterFees);
|
|
@@ -357,12 +238,6 @@ export default {
|
|
|
357
238
|
return this.orderTotal(order, fees) - this.orderSubtotal(order);
|
|
358
239
|
},
|
|
359
240
|
|
|
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
241
|
// This one is special because stripe fees
|
|
367
242
|
// can be applied as a percentage
|
|
368
243
|
stripeFees(order, fees) {
|
|
@@ -377,17 +252,6 @@ export default {
|
|
|
377
252
|
return stripeFeeT;
|
|
378
253
|
},
|
|
379
254
|
|
|
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
255
|
promoterFees(order, fees) {
|
|
392
256
|
if (!order.tickets) order.tickets = [];
|
|
393
257
|
if (!order.upgrades) order.upgrades = [];
|