@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.
@@ -10,6 +10,7 @@ import IFee, {
10
10
  FeeAppliedByEnum
11
11
  } from "../interfaces/IFee";
12
12
  import { PaymentMethodTypeEnum } from "../enums/PaymentMethodTypeEnum";
13
+ // import Fee from "src/schemas/Fee";
13
14
 
14
15
  interface IPaymentCalculatorParams {
15
16
  tickets: ICreateOrderTicketParams[];
@@ -134,7 +135,7 @@ class PaymentUtil {
134
135
  // };
135
136
  // },
136
137
 
137
- calculatePaymentTotal(params: IPaymentCalculatorParams): number {
138
+ calculatePaymentTotal(params: IPaymentCalculatorParams): any {
138
139
  let { tickets = [], upgrades = [], fees = [], paymentMethodType } = params;
139
140
 
140
141
  // No items, total is always 0
@@ -151,6 +152,10 @@ class PaymentUtil {
151
152
  return false;
152
153
  }
153
154
 
155
+ if (fee.appliedBy == FeeAppliedByEnum.Stripe && paymentMethodType == PaymentMethodTypeEnum.Cash) {
156
+ return false;
157
+ }
158
+
154
159
  // Ignore card entry fees for non card entry payemnts
155
160
  if (
156
161
  fee.filters &&
@@ -167,12 +172,13 @@ class PaymentUtil {
167
172
  (fee: IFee) =>
168
173
  fee.filters && fee.filters[0] == FeeFiltersEnum.GuestTicket
169
174
  );
170
-
175
+
171
176
  fees = fees.filter(
172
177
  (fee: IFee) =>
173
178
  fee.filters && fee.filters[0] !== FeeFiltersEnum.GuestTicket
174
179
  );
175
180
 
181
+
176
182
  function applyGuestTicketFee(
177
183
  ticket: ICreateOrderTicketParams,
178
184
  fee: IFee
@@ -181,12 +187,12 @@ class PaymentUtil {
181
187
  if (
182
188
  fee.filters &&
183
189
  fee.filters.includes(FeeFiltersEnum.Seated) &&
184
- !ticket.seat
190
+ !ticket.seat
185
191
  ) {
186
192
  return 0;
187
193
  }
188
194
 
189
- if(!ticket.guestTicket){
195
+ if (!ticket.guestTicket) {
190
196
  return 0;
191
197
  }
192
198
 
@@ -206,262 +212,193 @@ class PaymentUtil {
206
212
 
207
213
  return 0;
208
214
  }
209
-
210
- const ticketGuestFeeTotal = tickets.reduce((cur, ticket) => {
211
- return (
212
- cur +
213
- guestFees.reduce((cur, fee) => {
214
- const value = cur + applyGuestTicketFee(ticket, fee);
215
- return value;
216
- }, 0)
217
- );
218
- }, 0);
215
+ // Fees applied
216
+ const ticketFeesPromotersFlat = fees
217
+ .filter((f) => f.appliedTo === FeeAppliedToEnum.Ticket &&
218
+ f.appliedBy == FeeAppliedByEnum.Organization && f.type === FeeTypeEnum.Flat)
219
+ const ticketFeesPromotersPercent = fees
220
+ .filter((f) => f.appliedTo === FeeAppliedToEnum.Ticket &&
221
+ f.appliedBy == FeeAppliedByEnum.Organization && f.type === FeeTypeEnum.Percent);
222
+
223
+ const upgradeFeesPromotersFees = fees.filter(
224
+ (f) => f.appliedTo === FeeAppliedToEnum.Upgrade && f.appliedBy == FeeAppliedByEnum.Organization
225
+ );
219
226
 
220
-
221
- const ticketFees = fees
222
- .filter((f) => f.appliedTo === FeeAppliedToEnum.Ticket)
223
- .sort(({ type }) => {
224
- if (type === FeeTypeEnum.Flat) return -1;
225
- else return 1;
226
- });
227
- const upgradeFees = fees.filter(
228
- (f) => f.appliedTo === FeeAppliedToEnum.Upgrade
227
+ const upgradeFeesSelloutFees = fees.filter(
228
+ (f) => f.appliedTo === FeeAppliedToEnum.Upgrade && f.appliedBy == FeeAppliedByEnum.Sellout
229
+ );
230
+
231
+ const selloutFees: any = fees.filter(
232
+ (f) => f.appliedBy == FeeAppliedByEnum.Sellout
233
+ // (f) => f.appliedTo === FeeAppliedToEnum.Upgrade && f.appliedBy == FeeAppliedByEnum.Sellout
234
+ );
235
+ // sales tax fee
236
+ const salesTaxFees = fees.find((f) => f.name == "Sales tax");
237
+ const stripeFees = fees.filter(
238
+ (f) => f.appliedBy == FeeAppliedByEnum.Stripe
229
239
  );
230
240
  // Orders mattes here. Flat type fees must be applied before Percent type fees
231
- const orderFees = fees
241
+ const promoterOrderFees = fees
232
242
  .filter(
233
- (f) => f.appliedTo === FeeAppliedToEnum.Order && f.name != "Sales tax"
243
+ (f) => f.appliedTo === FeeAppliedToEnum.Order && f.name != "Sales tax" && f.appliedBy == FeeAppliedByEnum.Organization
234
244
  )
235
245
  .sort(({ type }) => {
236
246
  if (type === "Flat") return -1;
237
247
  else return 1;
238
248
  });
239
- const salesTax = fees.filter((f) => f.name == "Sales tax");
240
-
241
- function applyTicketFee(
242
- ticket: ICreateOrderTicketParams,
243
- fee: IFee
244
- ): number {
245
- // Ignore seated fees if not seated
246
- if (
247
- fee.filters &&
248
- fee.filters.includes(FeeFiltersEnum.Seated) &&
249
- !ticket.seat
250
- ) {
251
- return 0;
252
- }
253
-
254
- const minFee = fee.minAppliedToPrice || 0;
255
- const maxFee = fee.maxAppliedToPrice || Infinity;
256
-
257
- if (minFee <= ticket.price && ticket.price <= maxFee) {
258
- if (fee.type === FeeTypeEnum.Flat) {
259
- return fee.value;
260
- }
261
- if (fee.type === FeeTypeEnum.Percent) {
262
- return (ticket.price * fee.value) / 100;
263
- }
264
- } else {
265
- return 0;
266
- }
267
-
268
- return 0;
269
- }
270
-
271
- function applyUpgradeFee(
272
- upgrade: ICreateOrderUpgradeParams,
273
- fee: IFee
274
- ): number {
275
- const minFee = fee.minAppliedToPrice || 0;
276
- const maxFee = fee.maxAppliedToPrice || Infinity;
277
-
278
- if (minFee <= upgrade.price && upgrade.price <= maxFee) {
279
- if (fee.type === FeeTypeEnum.Flat) {
280
- return upgrade.price + fee.value;
281
- }
282
- if (fee.type === FeeTypeEnum.Percent) {
283
- return (upgrade.price * fee.value) / 100;
284
- }
285
- } else {
286
- return 0;
287
- }
249
+ // Caclualtions
250
+ const ticketTotal = tickets.reduce((cur, ticket) => cur + ticket.price, 0);
251
+ const upgradeTotal = upgrades.reduce((cur, upgrade) => cur + upgrade.price, 0);
252
+ const totalTicketAndUpgrades = ticketTotal + upgradeTotal
288
253
 
289
- return 0;
290
- }
254
+ const promoterFeeFlatPerOrderTotal = promoterOrderFees.reduce((acc, fee: any) => {
255
+ if (fee.type == FeeTypeEnum.Flat) {
291
256
 
292
- function applyOrderFee(orderSubtotal, fee) {
293
- if (fee.type === FeeTypeEnum.Flat) {
294
- return orderSubtotal + fee.value;
295
- }
296
- if (fee.type === FeeTypeEnum.Percent) {
297
- return orderSubtotal / (1 - fee.value / 100);
257
+ return acc + getFeeAmount(fee)
298
258
  }
299
- }
300
-
301
- const ticketTotal = tickets.reduce((cur, ticket) => cur + ticket.price, 0);
302
-
259
+ return acc
260
+ }, 0)
303
261
 
304
- const ticketTaxFeeTotal = tickets.reduce((cur, ticket) => {
262
+ const promoterFeeFlatPerTicketTotal = tickets.reduce((cur, ticket) => {
305
263
  return (
306
264
  cur +
307
- salesTax.reduce((cur, fee) => {
265
+ ticketFeesPromotersFlat.reduce((cur, fee) => {
308
266
  const value = cur + applyTicketFee(ticket, fee);
309
267
  return value;
310
268
  }, 0)
311
269
  );
312
270
  }, 0);
313
- const ticketFeeTotal = tickets.reduce((cur, ticket) => {
271
+
272
+ const promoterFeeFlatPerUpgradeTotal = upgrades.reduce((cur, upgrade) => {
314
273
  return (
315
274
  cur +
316
- ticketFees.reduce((cur, fee) => {
317
- const value = cur + applyTicketFee(ticket, fee);
275
+ upgradeFeesPromotersFees.reduce((cur, fee) => {
276
+ const value = cur + applyUpgradeFee(upgrade, fee);
318
277
  return value;
319
278
  }, 0)
320
279
  );
321
280
  }, 0);
322
281
 
323
-
324
-
325
-
326
- const upgradeTotal = upgrades.reduce(
327
- (cur, upgrade) => cur + upgrade.price,
328
- 0
329
- );
330
-
331
- const upgradeTaxFeeTotal = upgrades.reduce((cur, upgrade) => {
282
+ const SelloutFeeFlatPerUpgradeTotal = upgrades.reduce((cur, upgrade) => {
332
283
  return (
333
284
  cur +
334
- salesTax.reduce((curr, fee) => curr + applyUpgradeFee(upgrade, fee), 0)
285
+ upgradeFeesSelloutFees.reduce((cur, fee) => {
286
+ const value = cur + applyUpgradeFee(upgrade, fee);
287
+ return value;
288
+ }, 0)
335
289
  );
336
290
  }, 0);
337
291
 
338
- const upgradeFeeTotal = upgrades.reduce((cur, upgrade) => {
292
+ const promoterFeePercentPerTicketTotal = tickets.reduce((cur, ticket) => {
339
293
  return (
340
294
  cur +
341
- upgradeFees.reduce((cur, fee) => cur + applyUpgradeFee(upgrade, fee), 0)
295
+ ticketFeesPromotersPercent.reduce((cur, fee) => {
296
+ const value = cur + applyTicketFee(ticket, fee);
297
+ return value;
298
+ }, 0)
342
299
  );
343
300
  }, 0);
344
- const orderSubtotal = Math.round(
345
- ticketTotal +
346
- ticketTaxFeeTotal +
347
- // ticketFeeTotal +
348
- ticketFeeTotal +
349
- upgradeTaxFeeTotal + ticketGuestFeeTotal +
350
- upgradeTotal +
351
- upgradeFeeTotal
352
- );
353
-
354
-
355
- const orderTotal = orderFees.reduce((cur, fee) => {
356
- return applyOrderFee(cur, fee);
357
- }, orderSubtotal);
358
-
359
- return Math.round(orderTotal);
360
- }
361
-
362
-
363
- calculatePaymentTotalDublicate(params: IPaymentCalculatorParams): number {
364
- let { tickets = [], upgrades = [], fees = [], paymentMethodType } = params;
365
301
 
366
- // No items, total is always 0
367
- if (!tickets.length && !upgrades.length) return 0;
368
-
369
- // Filter fees
370
- fees = fees.filter((fee: IFee) => {
371
- // Ignore card reader fees for non card reader payemnts
372
- if (
373
- fee.filters &&
374
- fee.filters.includes(FeeFiltersEnum.CardReader) &&
375
- paymentMethodType !== PaymentMethodTypeEnum.CardReader
376
- ) {
377
- return false;
302
+ const promoterFeePercentPerOrder = promoterOrderFees.reduce((acc, fee) => {
303
+ if (fee.type == FeeTypeEnum.Percent) {
304
+ return acc + getFeeAmount(fee, totalTicketAndUpgrades)
378
305
  }
306
+ return acc
307
+ }, 0)
379
308
 
380
- // Ignore card entry fees for non card entry payemnts
381
- if (
382
- fee.filters &&
383
- fee.filters.includes(FeeFiltersEnum.CardEntry) &&
384
- paymentMethodType !== PaymentMethodTypeEnum.CardEntry
385
- ) {
386
- return false;
387
- }
309
+ const ticketGuestFeeTotalForPromoter = tickets.reduce((cur, ticket) => {
310
+ return (
311
+ cur +
312
+ guestFees.reduce((cur, fee) => {
313
+ const value = fee.appliedBy == FeeAppliedByEnum.Organization ? cur + applyGuestTicketFee(ticket, fee) : 0;
314
+ return value;
315
+ }, 0)
316
+ );
317
+ }, 0);
388
318
 
389
- return true;
390
- });
319
+ const ticketGuestFeeTotalForSellout = tickets.reduce((cur, ticket) => {
320
+ return (
321
+ cur +
322
+ guestFees.reduce((cur, fee) => {
323
+ const value = fee.appliedBy == FeeAppliedByEnum.Sellout ? cur + applyGuestTicketFee(ticket, fee) : 0;
324
+ return value;
325
+ }, 0)
326
+ );
327
+ }, 0);
391
328
 
392
- let guestFees = fees.filter(
393
- (fee: IFee) =>
394
- fee.filters && fee.filters[0] == FeeFiltersEnum.GuestTicket
395
- );
396
-
397
- fees = fees.filter(
398
- (fee: IFee) =>
399
- fee.filters && fee.filters[0] !== FeeFiltersEnum.GuestTicket
400
- );
329
+ const orderSubtotal = Math.round(
330
+ ticketTotal +
331
+ upgradeTotal +
332
+ promoterFeeFlatPerTicketTotal +
333
+ promoterFeeFlatPerOrderTotal +
334
+ promoterFeePercentPerTicketTotal +
335
+ promoterFeePercentPerOrder +
336
+ ticketGuestFeeTotalForPromoter + promoterFeeFlatPerUpgradeTotal
337
+ )
338
+ const salesTaxAmount = salesTaxFees ? (orderSubtotal * salesTaxFees.value) / 100 : 0;
401
339
 
402
- function applyGuestTicketFee(
403
- ticket: ICreateOrderTicketParams,
404
- fee: IFee
405
- ): number {
406
- // Ignore seated fees if not seated
407
- if (
408
- fee.filters &&
409
- fee.filters.includes(FeeFiltersEnum.Seated) &&
410
- !ticket.seat
411
- ) {
412
- return 0;
413
- }
340
+ const promoterTotal = orderSubtotal + salesTaxAmount;
414
341
 
415
- if(!ticket.guestTicket){
416
- return 0;
342
+ const selloutPercentFeesAmt = selloutFees.reduce((acc, fee) => {
343
+ if (fee.type == FeeTypeEnum.Percent) {
344
+ return acc + getFeeAmount(fee, promoterTotal)
417
345
  }
346
+ return acc
347
+ }, 0)
418
348
 
419
- const minFee = fee.minAppliedToPrice || 0;
420
- const maxFee = fee.maxAppliedToPrice || Infinity;
349
+ const selloutFeeFlatPerTicketAmt = tickets.reduce((cur: number, ticket: any) => {
350
+ return (
351
+ cur +
352
+ selloutFees.reduce((cur: number, fee: IFee) => {
353
+ if (fee.type == FeeTypeEnum.Flat && fee.appliedTo === FeeAppliedToEnum.Ticket &&
354
+ !fee?.filters?.includes(FeeFiltersEnum.Seated)
355
+ ) {
356
+ const value = cur + applyTicketFee(ticket, fee);
357
+ return value;
358
+ }
359
+ return cur
360
+ }, 0)
361
+ );
362
+ }, 0);
421
363
 
422
- if (minFee <= ticket.price && ticket.price <= maxFee) {
423
- if (fee.type === FeeTypeEnum.Flat) {
424
- return fee.value;
425
- }
426
- if (fee.type === FeeTypeEnum.Percent) {
427
- return (ticket.price * fee.value) / 100;
428
- }
429
- } else {
430
- return 0;
364
+ const selloutFeeFlatPerOrderAmt = selloutFees.reduce((cur: number, fee: IFee) => {
365
+ if (fee.type === FeeTypeEnum.Flat && fee.appliedTo === FeeAppliedToEnum.Order) {
366
+ const value = cur + fee.value;
367
+ return value;
431
368
  }
432
-
433
- return 0;
434
- }
435
-
436
- const ticketGuestFeeTotal = tickets.reduce((cur, ticket) => {
369
+ return cur
370
+ }, 0)
371
+ const selloutSeatedFeeAmt = tickets.reduce((cur: number, ticket: any) => {
437
372
  return (
438
373
  cur +
439
- guestFees.reduce((cur, fee) => {
440
- const value = cur + applyGuestTicketFee(ticket, fee);
441
- return value;
374
+ selloutFees.reduce((cur: number, fee: IFee) => {
375
+ if (fee.type == FeeTypeEnum.Flat && fee.appliedTo === FeeAppliedToEnum.Ticket &&
376
+ fee?.filters?.includes(FeeFiltersEnum.Seated)
377
+ ) {
378
+ const value = cur + applyTicketFee(ticket, fee);
379
+ return value;
380
+ }
381
+
382
+ return cur
383
+
442
384
  }, 0)
443
385
  );
444
386
  }, 0);
445
387
 
446
- const ticketFees = fees
447
- .filter((f) => f.appliedTo === FeeAppliedToEnum.Ticket)
448
- .sort(({ type }) => {
449
- if (type === FeeTypeEnum.Flat) return -1;
450
- else return 1;
451
- });
452
- const upgradeFees = fees.filter(
453
- (f) => f.appliedTo === FeeAppliedToEnum.Upgrade
454
- );
455
- // Orders mattes here. Flat type fees must be applied before Percent type fees
456
- const orderFees = fees
457
- .filter(
458
- (f) => f.appliedTo === FeeAppliedToEnum.Order && f.name != "Sales tax"
388
+ const selloutFeesTotal = Math.round(
389
+ selloutPercentFeesAmt +
390
+ selloutFeeFlatPerTicketAmt +
391
+ selloutFeeFlatPerOrderAmt +
392
+ selloutSeatedFeeAmt + ticketGuestFeeTotalForSellout + SelloutFeeFlatPerUpgradeTotal
459
393
  )
460
- .sort(({ type }) => {
461
- if (type === "Flat") return -1;
462
- else return 1;
463
- });
464
- const salesTax = fees.filter((f) => f.name == "Sales tax");
394
+
395
+ const preStripeTotal = promoterTotal + selloutFeesTotal
396
+
397
+ let stripeFeeAmt = 0
398
+ const stripeFeePercentage = stripeFees.find(fee => fee.type == FeeTypeEnum.Percent)?.value || 0
399
+ const stripeFeeFlat = stripeFees.find(fee => fee.type == FeeTypeEnum.Flat)?.value || 0
400
+ stripeFeeAmt = (preStripeTotal + (stripeFeeFlat)) / (1 - (stripeFeePercentage / 100)) - preStripeTotal
401
+ // stripeFeeAmt = ((preStripeTotal + (stripeFeeFlat)) * (stripeFeePercentage / 100)) - preStripeTotal
465
402
 
466
403
  function applyTicketFee(
467
404
  ticket: ICreateOrderTicketParams,
@@ -502,7 +439,8 @@ class PaymentUtil {
502
439
 
503
440
  if (minFee <= upgrade.price && upgrade.price <= maxFee) {
504
441
  if (fee.type === FeeTypeEnum.Flat) {
505
- return upgrade.price + fee.value;
442
+ // return upgrade.price + fee.value;
443
+ return fee.value;
506
444
  }
507
445
  if (fee.type === FeeTypeEnum.Percent) {
508
446
  return (upgrade.price * fee.value) / 100;
@@ -514,89 +452,103 @@ class PaymentUtil {
514
452
  return 0;
515
453
  }
516
454
 
517
- function applyOrderFee(orderSubtotal, fee) {
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
+ // return Calculated fees amount based on type
470
+ function getFeeAmount(fee, amt = 0) {
518
471
  if (fee.type === FeeTypeEnum.Flat) {
519
- return orderSubtotal + fee.value;
472
+ return fee.value;
520
473
  }
521
474
  if (fee.type === FeeTypeEnum.Percent) {
522
- return orderSubtotal / (1 - fee.value / 100);
475
+ return amt * (fee.value / 100);
523
476
  }
524
477
  }
525
478
 
526
- const ticketTotal = tickets.reduce((cur, ticket) => cur + ticket.price, 0);
527
-
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
+ let promoterFeeAmount = promoterFeeFlatPerTicketTotal + promoterFeeFlatPerOrderTotal + promoterFeePercentPerTicketTotal +
492
+ promoterFeePercentPerOrder + ticketGuestFeeTotalForPromoter + promoterFeeFlatPerUpgradeTotal;
493
+ let total = {
494
+ salesTax: salesTaxAmount || 0,
495
+ total: (preStripeTotal + stripeFeeAmt) || 0,
496
+ promoterFees: (promoterFeeAmount) || 0,
497
+ stripeFees: stripeFeeAmt || 0,
498
+ selloutFees: selloutFeesTotal || 0,
499
+ orderSubtotal: orderSubtotal || 0,
500
+ subTotal: totalTicketAndUpgrades || 0,
501
+ totalFees: (promoterFeeAmount + stripeFeeAmt + selloutFeesTotal + salesTaxAmount) || 0,
502
+ totalWithoutTaxFees: (promoterFeeAmount + stripeFeeAmt + selloutFeesTotal) || 0
503
+ }
504
+ return total
528
505
 
529
- const ticketTaxFeeTotal = tickets.reduce((cur, ticket) => {
530
- return (
531
- cur +
532
- salesTax.reduce((cur, fee) => {
533
- const value = cur + applyTicketFee(ticket, fee);
534
- return value;
535
- }, 0)
536
- );
537
- }, 0);
538
506
 
539
- // const ticketGuestFeeTotal = tickets.reduce((cur, ticket) => {
507
+ // const ticketTaxFeeTotal = tickets.reduce((cur, ticket) => {
540
508
  // return (
541
509
  // cur +
542
- // ticketFees.reduce((cur, fee) => {
510
+ // salesTax.reduce((cur, fee) => {
543
511
  // const value = cur + applyTicketFee(ticket, fee);
544
512
  // return value;
545
513
  // }, 0)
546
514
  // );
547
515
  // }, 0);
548
516
 
549
- // applyGuestTicketFee
550
517
 
551
518
 
552
519
 
553
520
 
554
- const ticketFeeTotal = tickets.reduce((cur, ticket) => {
555
- return (
556
- cur +
557
- ticketFees.reduce((cur, fee) => {
558
- const value = cur + applyTicketFee(ticket, fee);
559
- return value;
560
- }, 0)
561
- );
562
- }, 0);
563
521
 
564
- const upgradeTotal = upgrades.reduce(
565
- (cur, upgrade) => cur + upgrade.price,
566
- 0
567
- );
568
522
 
569
- const upgradeTaxFeeTotal = upgrades.reduce((cur, upgrade) => {
570
- return (
571
- cur +
572
- salesTax.reduce((curr, fee) => curr + applyUpgradeFee(upgrade, fee), 0)
573
- );
574
- }, 0);
523
+ // const upgradeTaxFeeTotal = upgrades.reduce((cur, upgrade) => {
524
+ // return (
525
+ // cur +
526
+ // salesTax.reduce((curr, fee) => curr + applyUpgradeFee(upgrade, fee), 0)
527
+ // );
528
+ // }, 0);
575
529
 
576
- const upgradeFeeTotal = upgrades.reduce((cur, upgrade) => {
577
- return (
578
- cur +
579
- upgradeFees.reduce((cur, fee) => cur + applyUpgradeFee(upgrade, fee), 0)
580
- );
581
- }, 0);
582
- const orderSubtotal = Math.round(
583
- ticketTotal +
584
- ticketTaxFeeTotal +
585
- ticketFeeTotal +
586
- upgradeTaxFeeTotal + ticketGuestFeeTotal +
587
- upgradeTotal +
588
- upgradeFeeTotal
589
- );
530
+ // const upgradeFeeTotal = upgrades.reduce((cur, upgrade) => {
531
+ // return (
532
+ // cur +
533
+ // upgradeFees.reduce((cur, fee) => cur + applyUpgradeFee(upgrade, fee), 0)
534
+ // );
535
+ // }, 0);
590
536
 
537
+ // const promoterFeeFlatPerOrder = promoterOrderFees.reduce((cur, fee) => {
538
+ // return applyOrderFee(cur, fee);
539
+ // }, ticketTotal + upgradeTotal);
591
540
 
592
- const orderTotal = orderFees.reduce((cur, fee) => {
593
- return applyOrderFee(cur, fee);
594
- }, orderSubtotal);
541
+ // console.log(promoterOrderTotal)
595
542
 
596
543
 
597
- return Math.round(orderTotal);
598
- }
544
+ // Applying sellout fees
545
+
599
546
 
547
+ // applying sales tax fees
548
+
549
+
550
+ // return Math.round(orderTotal);
551
+ }
600
552
 
601
553
 
602
554
  calculatePaymentSubtotal(params: IPaymentCalculatorParams): number {
@@ -620,14 +572,14 @@ class PaymentUtil {
620
572
  let { fees } = params;
621
573
  const salesTax = fees.filter((f) => f.name == "Sales tax");
622
574
  const tax = salesTax.length > 0 ? salesTax[0].value : 0;
623
- const total = this.calculatePaymentTotal(params);
575
+ const total = this.calculatePaymentTotal(params).total;
624
576
  let subtotal = this.calculatePaymentSubtotal(params);
625
577
  subtotal = subtotal + (subtotal * tax) / 100;
626
578
  return Math.round(total - subtotal);
627
579
  }
628
580
 
629
581
  calculateFeeWithoutTax(params: IPaymentCalculatorParams): number {
630
- const total = this.calculatePaymentTotal(params);
582
+ const total = this.calculatePaymentTotal(params).total;
631
583
  let subtotal = this.calculatePaymentSubtotal(params);
632
584
  return Math.round(total - subtotal);
633
585
  }
@@ -667,14 +619,14 @@ class PaymentUtil {
667
619
  });
668
620
  }
669
621
  calculateStripeFee(params: IPaymentCalculatorParams): number {
670
- const total = this.calculatePaymentTotal(params);
622
+ const total = this.calculatePaymentTotal(params).total;
671
623
  const subtotal = this.calculatePaymentSubtotal(params);
672
624
  const platformFees = this.calculatePlatformFee(params);
673
625
  const organizationFee = this.calculateOrganizationFee(params);
674
626
  return total - subtotal - platformFees - organizationFee;
675
627
  }
676
628
  calculateProcessingFee(params: IPaymentCalculatorParams): number {
677
- const total = this.calculatePaymentTotal(params);
629
+ const total = this.calculatePaymentTotal(params).total;
678
630
  const subtotal = this.calculatePaymentSubtotal(params);
679
631
  const organizationFee = this.calculateOrganizationFee(params);
680
632
  return total - subtotal - organizationFee;
@@ -686,7 +638,7 @@ class PaymentUtil {
686
638
  // }
687
639
 
688
640
  calculateGuestFee(tickets: any, event: any): number {
689
-
641
+
690
642
  let guestTicketFees = event?.fees.filter(
691
643
  (fee: IFee) =>
692
644
  fee.filters && fee.filters[0] === FeeFiltersEnum.GuestTicket
@@ -702,10 +654,10 @@ class PaymentUtil {
702
654
  let guestMembers = tickets.filter((a) => a.guestTicket).length;
703
655
  let guestFees = (guestFeesValue as number) * guestMembers;
704
656
  return guestTicketFees.length > 0 && event.organization.isTegIntegration
705
- ? guestFees + guestFees * stripeFeesValue/100
657
+ ? guestFees + guestFees * stripeFeesValue / 100
706
658
  : 0;
707
659
  }
708
-
660
+
709
661
  }
710
662
 
711
663
  export default new PaymentUtil();