@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.
Files changed (40) hide show
  1. package/.dist/graphql/mutations/generateActivityReport.mutation.d.ts +2 -0
  2. package/.dist/graphql/mutations/generateActivityReport.mutation.js +18 -0
  3. package/.dist/graphql/mutations/generateActivityReport.mutation.js.map +1 -0
  4. package/.dist/graphql/mutations/sendSeasonOrderReceiptEmail.mutation.d.ts +2 -0
  5. package/.dist/graphql/mutations/sendSeasonOrderReceiptEmail.mutation.js +13 -0
  6. package/.dist/graphql/mutations/sendSeasonOrderReceiptEmail.mutation.js.map +1 -0
  7. package/.dist/graphql/queries/order.query.js +1 -0
  8. package/.dist/graphql/queries/order.query.js.map +1 -1
  9. package/.dist/graphql/queries/orders.query.js +1 -0
  10. package/.dist/graphql/queries/orders.query.js.map +1 -1
  11. package/.dist/interfaces/ICreateOrderParams.d.ts +2 -0
  12. package/.dist/interfaces/IFee.d.ts +1 -0
  13. package/.dist/interfaces/IOrder.d.ts +2 -1
  14. package/.dist/interfaces/IOrder.js.map +1 -1
  15. package/.dist/interfaces/IOrderSummary.d.ts +1 -0
  16. package/.dist/schemas/Order.d.ts +81 -0
  17. package/.dist/schemas/Order.js +81 -0
  18. package/.dist/schemas/Order.js.map +1 -1
  19. package/.dist/sellout-proto.js +1014 -118
  20. package/.dist/utils/OrderUtil.js +111 -195
  21. package/.dist/utils/OrderUtil.js.map +1 -1
  22. package/.dist/utils/PaymentUtil.d.ts +2 -2
  23. package/.dist/utils/PaymentUtil.js +190 -198
  24. package/.dist/utils/PaymentUtil.js.map +1 -1
  25. package/package.json +3 -3
  26. package/src/graphql/mutations/generateActivityReport.mutation.ts +14 -0
  27. package/src/graphql/mutations/sendSeasonOrderReceiptEmail.mutation.ts +9 -0
  28. package/src/graphql/queries/order.query.ts +1 -0
  29. package/src/graphql/queries/orders.query.ts +1 -0
  30. package/src/interfaces/ICreateOrderParams.ts +2 -0
  31. package/src/interfaces/IFee.ts +2 -0
  32. package/src/interfaces/IOrder.ts +2 -1
  33. package/src/interfaces/IOrderSummary.ts +1 -0
  34. package/src/proto/email.proto +0 -2
  35. package/src/proto/event.proto +0 -3
  36. package/src/proto/fee.proto +1 -0
  37. package/src/proto/order.proto +35 -1
  38. package/src/schemas/Order.ts +81 -0
  39. package/src/utils/OrderUtil.ts +128 -219
  40. 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;
@@ -40,6 +40,8 @@ export default interface IFee {
40
40
  updatedBy?: string;
41
41
  updatedAt?: number;
42
42
  disabled: boolean;
43
+ amount?: string;
44
+
43
45
  // disableable: boolean;
44
46
  // editable: boolean;
45
47
  // isGlobal: boolean;
@@ -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[];
@@ -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
 
@@ -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
 
@@ -21,6 +21,7 @@ message Fee {
21
21
  int32 updatedAt = 14;
22
22
  bool disabled = 15;
23
23
  string seasonId = 16;
24
+ string amount = 17;
24
25
  }
25
26
 
26
27
  /****************************************************************************************
@@ -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(SendOrderQRCodeEmailRequest) returns (SendOrderQRCodeEmailResponse) {}
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) {}
@@ -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,
@@ -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
- const ticketFees = fees.filter(f => f.appliedTo === "Ticket");
44
- const upgradeFees = fees.filter(f => f.appliedTo === "Upgrade");
45
- let orderFees = fees.filter(f => f.appliedTo === "Order");
46
-
47
- function applyTicketFee(ticket, fee) {
48
- if (fee.filters.includes("Seated") && !ticket.seat) return 0;
49
- const noMax = fee.maxAppliedToPrice === 0;
50
- if (
51
- (fee.minAppliedToPrice <= ticket.price &&
52
- ticket.price <= fee.maxAppliedToPrice) ||
53
- noMax
54
- ) {
55
- if (fee.type === "Flat") {
56
- return fee.value;
57
- }
58
- if (fee.type === "Percent") {
59
- return (ticket.price * fee.value) / 100;
60
- }
61
- } else {
62
- return 0;
63
- }
64
- }
65
-
66
- function applyUpgradeFee(upgrade, fee) {
67
- const noMax = fee.maxAppliedToPrice === 0;
68
- if (
69
- (fee.minAppliedToPrice <= upgrade.price &&
70
- upgrade.price <= fee.minAppliedToPrice) ||
71
- noMax
72
- ) {
73
- if (fee.type === "Flat") {
74
- return fee.value;
75
- }
76
- if (fee.type === "Percent") {
77
- return (upgrade.price * fee.value) / 100;
78
- }
79
- } else {
80
- return 0;
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 upgradeFeeTotal = order.upgrades.reduce((cur, upgrade) => {
111
- return (
112
- cur +
113
- upgradeFees.reduce((cur, fee) => cur + applyUpgradeFee(upgrade, fee), 0)
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 + ticketFeeTotal + upgradeTotal + upgradeFeeTotal;
118
-
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
- });
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
- const subTotal = order?.payments?.reduce((cur: number, payment: IPayment): number => {
303
- return cur + PaymentUtil.calculatePaymentSubtotal({
304
- tickets: order.tickets.filter(ticket => ticket.paymentId === payment._id),
305
- upgrades: order.upgrades.filter(upgrade => upgrade.paymentId === payment._id),
306
- fees: [],
307
- paymentMethodType: payment.paymentMethodType,
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
- }, 0);
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 = [];