@sellout/models 0.0.161 → 0.0.162
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/interfaces/IFee.d.ts +2 -1
- package/.dist/interfaces/IFee.js +1 -0
- package/.dist/interfaces/IFee.js.map +1 -1
- package/.dist/utils/PaymentUtil.d.ts +4 -3
- package/.dist/utils/PaymentUtil.js +63 -29
- package/.dist/utils/PaymentUtil.js.map +1 -1
- package/package.json +3 -3
- package/src/interfaces/IFee.ts +1 -0
- package/src/utils/PaymentUtil.ts +130 -83
|
@@ -15,7 +15,8 @@ export declare enum FeeAppliedByEnum {
|
|
|
15
15
|
export declare enum FeeFiltersEnum {
|
|
16
16
|
Seated = "Seated",
|
|
17
17
|
CardEntry = "Card Entry",
|
|
18
|
-
CardReader = "Card Reader"
|
|
18
|
+
CardReader = "Card Reader",
|
|
19
|
+
GuestTicket = "Guest ticket"
|
|
19
20
|
}
|
|
20
21
|
export default interface IFee {
|
|
21
22
|
_id?: string;
|
package/.dist/interfaces/IFee.js
CHANGED
|
@@ -23,5 +23,6 @@ var FeeFiltersEnum;
|
|
|
23
23
|
FeeFiltersEnum["Seated"] = "Seated";
|
|
24
24
|
FeeFiltersEnum["CardEntry"] = "Card Entry";
|
|
25
25
|
FeeFiltersEnum["CardReader"] = "Card Reader";
|
|
26
|
+
FeeFiltersEnum["GuestTicket"] = "Guest ticket";
|
|
26
27
|
})(FeeFiltersEnum = exports.FeeFiltersEnum || (exports.FeeFiltersEnum = {}));
|
|
27
28
|
//# sourceMappingURL=IFee.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IFee.js","sourceRoot":"","sources":["../../src/interfaces/IFee.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,kCAAmB,CAAA;AACrB,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB;AAED,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;AACrB,CAAC,EAJW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAI3B;AAED,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,qCAAiB,CAAA;IACjB,iDAA6B,CAAA;AAC/B,CAAC,EAJW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAI3B;AAED,IAAY,
|
|
1
|
+
{"version":3,"file":"IFee.js","sourceRoot":"","sources":["../../src/interfaces/IFee.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,kCAAmB,CAAA;AACrB,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB;AAED,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;AACrB,CAAC,EAJW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAI3B;AAED,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,qCAAiB,CAAA;IACjB,iDAA6B,CAAA;AAC/B,CAAC,EAJW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAI3B;AAED,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,0CAAwB,CAAA;IACxB,4CAA0B,CAAA;IAC1B,8CAA4B,CAAA;AAC9B,CAAC,EALW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAKzB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ICreateOrderTicketParams, ICreateOrderUpgradeParams } from
|
|
2
|
-
import IFee from
|
|
3
|
-
import { PaymentMethodTypeEnum } from
|
|
1
|
+
import { ICreateOrderTicketParams, ICreateOrderUpgradeParams } from "../interfaces/ICreateOrderParams";
|
|
2
|
+
import IFee from "../interfaces/IFee";
|
|
3
|
+
import { PaymentMethodTypeEnum } from "../enums/PaymentMethodTypeEnum";
|
|
4
4
|
interface IPaymentCalculatorParams {
|
|
5
5
|
tickets: ICreateOrderTicketParams[];
|
|
6
6
|
upgrades: ICreateOrderUpgradeParams[];
|
|
@@ -17,6 +17,7 @@ declare class PaymentUtil {
|
|
|
17
17
|
calculatePlatformFee(params: IPaymentCalculatorParams): number;
|
|
18
18
|
calculateStripeFee(params: IPaymentCalculatorParams): number;
|
|
19
19
|
calculateProcessingFee(params: IPaymentCalculatorParams): number;
|
|
20
|
+
calculateGuestFee(tickets: any, event: any): number;
|
|
20
21
|
}
|
|
21
22
|
declare const _default: PaymentUtil;
|
|
22
23
|
export default _default;
|
|
@@ -14,7 +14,7 @@ class PaymentUtil {
|
|
|
14
14
|
// DOES NOT WORK! Work in Progress :)
|
|
15
15
|
// calculateOrderItemPrices(params: IPaymentCalculatorParams): IOrderItems {
|
|
16
16
|
// let {
|
|
17
|
-
// tickets = [],
|
|
17
|
+
// tickets = [],
|
|
18
18
|
// upgrades = [],
|
|
19
19
|
// fees = [],
|
|
20
20
|
// paymentMethodType,
|
|
@@ -103,41 +103,51 @@ class PaymentUtil {
|
|
|
103
103
|
// };
|
|
104
104
|
// },
|
|
105
105
|
calculatePaymentTotal(params) {
|
|
106
|
-
let { tickets = [], upgrades = [], fees = [], paymentMethodType
|
|
106
|
+
let { tickets = [], upgrades = [], fees = [], paymentMethodType } = params;
|
|
107
107
|
// No items, total is always 0
|
|
108
108
|
if (!tickets.length && !upgrades.length)
|
|
109
109
|
return 0;
|
|
110
110
|
// Filter fees
|
|
111
111
|
fees = fees.filter((fee) => {
|
|
112
112
|
// Ignore card reader fees for non card reader payemnts
|
|
113
|
-
if (fee.filters &&
|
|
113
|
+
if (fee.filters &&
|
|
114
|
+
fee.filters.includes(IFee_1.FeeFiltersEnum.CardReader) &&
|
|
115
|
+
paymentMethodType !== PaymentMethodTypeEnum_1.PaymentMethodTypeEnum.CardReader) {
|
|
114
116
|
return false;
|
|
115
117
|
}
|
|
116
118
|
// Ignore card entry fees for non card entry payemnts
|
|
117
|
-
if (fee.filters &&
|
|
119
|
+
if (fee.filters &&
|
|
120
|
+
fee.filters.includes(IFee_1.FeeFiltersEnum.CardEntry) &&
|
|
121
|
+
paymentMethodType !== PaymentMethodTypeEnum_1.PaymentMethodTypeEnum.CardEntry) {
|
|
118
122
|
return false;
|
|
119
123
|
}
|
|
120
124
|
return true;
|
|
121
125
|
});
|
|
122
|
-
|
|
126
|
+
fees = fees.filter((fee) => fee.filters && fee.filters[0] !== IFee_1.FeeFiltersEnum.GuestTicket);
|
|
127
|
+
const ticketFees = fees
|
|
128
|
+
.filter((f) => f.appliedTo === IFee_1.FeeAppliedToEnum.Ticket)
|
|
123
129
|
.sort(({ type }) => {
|
|
124
130
|
if (type === IFee_1.FeeTypeEnum.Flat)
|
|
125
131
|
return -1;
|
|
126
132
|
else
|
|
127
133
|
return 1;
|
|
128
134
|
});
|
|
129
|
-
const upgradeFees = fees.filter(f => f.appliedTo === IFee_1.FeeAppliedToEnum.Upgrade);
|
|
135
|
+
const upgradeFees = fees.filter((f) => f.appliedTo === IFee_1.FeeAppliedToEnum.Upgrade);
|
|
130
136
|
// Orders mattes here. Flat type fees must be applied before Percent type fees
|
|
131
|
-
const orderFees = fees
|
|
132
|
-
|
|
137
|
+
const orderFees = fees
|
|
138
|
+
.filter((f) => f.appliedTo === IFee_1.FeeAppliedToEnum.Order && f.name != "Sales tax")
|
|
139
|
+
.sort(({ type }) => {
|
|
140
|
+
if (type === "Flat")
|
|
133
141
|
return -1;
|
|
134
142
|
else
|
|
135
143
|
return 1;
|
|
136
144
|
});
|
|
137
|
-
const salesTax = fees.filter(f => f.name ==
|
|
145
|
+
const salesTax = fees.filter((f) => f.name == "Sales tax");
|
|
138
146
|
function applyTicketFee(ticket, fee) {
|
|
139
147
|
// Ignore seated fees if not seated
|
|
140
|
-
if (fee.filters &&
|
|
148
|
+
if (fee.filters &&
|
|
149
|
+
fee.filters.includes(IFee_1.FeeFiltersEnum.Seated) &&
|
|
150
|
+
!ticket.seat) {
|
|
141
151
|
return 0;
|
|
142
152
|
}
|
|
143
153
|
const minFee = fee.minAppliedToPrice || 0;
|
|
@@ -147,7 +157,7 @@ class PaymentUtil {
|
|
|
147
157
|
return fee.value;
|
|
148
158
|
}
|
|
149
159
|
if (fee.type === IFee_1.FeeTypeEnum.Percent) {
|
|
150
|
-
return (ticket.price * fee.value / 100
|
|
160
|
+
return (ticket.price * fee.value) / 100;
|
|
151
161
|
}
|
|
152
162
|
}
|
|
153
163
|
else {
|
|
@@ -163,7 +173,7 @@ class PaymentUtil {
|
|
|
163
173
|
return upgrade.price + fee.value;
|
|
164
174
|
}
|
|
165
175
|
if (fee.type === IFee_1.FeeTypeEnum.Percent) {
|
|
166
|
-
return (upgrade.price * fee.value / 100
|
|
176
|
+
return (upgrade.price * fee.value) / 100;
|
|
167
177
|
}
|
|
168
178
|
}
|
|
169
179
|
else {
|
|
@@ -176,30 +186,39 @@ class PaymentUtil {
|
|
|
176
186
|
return orderSubtotal + fee.value;
|
|
177
187
|
}
|
|
178
188
|
if (fee.type === IFee_1.FeeTypeEnum.Percent) {
|
|
179
|
-
return
|
|
189
|
+
return orderSubtotal / (1 - fee.value / 100);
|
|
180
190
|
}
|
|
181
191
|
}
|
|
182
192
|
const ticketTotal = tickets.reduce((cur, ticket) => cur + ticket.price, 0);
|
|
183
193
|
const ticketTaxFeeTotal = tickets.reduce((cur, ticket) => {
|
|
184
|
-
return cur +
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
194
|
+
return (cur +
|
|
195
|
+
salesTax.reduce((cur, fee) => {
|
|
196
|
+
const value = cur + applyTicketFee(ticket, fee);
|
|
197
|
+
return value;
|
|
198
|
+
}, 0));
|
|
188
199
|
}, 0);
|
|
189
200
|
const ticketFeeTotal = tickets.reduce((cur, ticket) => {
|
|
190
|
-
return cur +
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
201
|
+
return (cur +
|
|
202
|
+
ticketFees.reduce((cur, fee) => {
|
|
203
|
+
const value = cur + applyTicketFee(ticket, fee);
|
|
204
|
+
return value;
|
|
205
|
+
}, 0));
|
|
194
206
|
}, 0);
|
|
195
207
|
const upgradeTotal = upgrades.reduce((cur, upgrade) => cur + upgrade.price, 0);
|
|
196
208
|
const upgradeTaxFeeTotal = upgrades.reduce((cur, upgrade) => {
|
|
197
|
-
return cur +
|
|
209
|
+
return (cur +
|
|
210
|
+
salesTax.reduce((curr, fee) => curr + applyUpgradeFee(upgrade, fee), 0));
|
|
198
211
|
}, 0);
|
|
199
212
|
const upgradeFeeTotal = upgrades.reduce((cur, upgrade) => {
|
|
200
|
-
return
|
|
213
|
+
return (cur +
|
|
214
|
+
upgradeFees.reduce((cur, fee) => cur + applyUpgradeFee(upgrade, fee), 0));
|
|
201
215
|
}, 0);
|
|
202
|
-
const orderSubtotal = Math.round(ticketTotal +
|
|
216
|
+
const orderSubtotal = Math.round(ticketTotal +
|
|
217
|
+
ticketTaxFeeTotal +
|
|
218
|
+
ticketFeeTotal +
|
|
219
|
+
upgradeTaxFeeTotal +
|
|
220
|
+
upgradeTotal +
|
|
221
|
+
upgradeFeeTotal);
|
|
203
222
|
// console.log(`Order SubTotal:`, orderSubtotal);
|
|
204
223
|
const orderTotal = orderFees.reduce((cur, fee) => {
|
|
205
224
|
return applyOrderFee(cur, fee);
|
|
@@ -219,11 +238,11 @@ class PaymentUtil {
|
|
|
219
238
|
}
|
|
220
239
|
calculateFee(params) {
|
|
221
240
|
let { fees } = params;
|
|
222
|
-
const salesTax = fees.filter(f => f.name ==
|
|
241
|
+
const salesTax = fees.filter((f) => f.name == "Sales tax");
|
|
223
242
|
const tax = salesTax.length > 0 ? salesTax[0].value : 0;
|
|
224
243
|
const total = this.calculatePaymentTotal(params);
|
|
225
244
|
let subtotal = this.calculatePaymentSubtotal(params);
|
|
226
|
-
subtotal = subtotal + (subtotal * tax / 100
|
|
245
|
+
subtotal = subtotal + (subtotal * tax) / 100;
|
|
227
246
|
return Math.round(total - subtotal);
|
|
228
247
|
}
|
|
229
248
|
calculateFeeWithoutTax(params) {
|
|
@@ -232,7 +251,7 @@ class PaymentUtil {
|
|
|
232
251
|
return Math.round(total - subtotal);
|
|
233
252
|
}
|
|
234
253
|
calculateOrganizationFee(params) {
|
|
235
|
-
let { tickets = [], upgrades = [], fees = [], paymentMethodType
|
|
254
|
+
let { tickets = [], upgrades = [], fees = [], paymentMethodType } = params;
|
|
236
255
|
fees = FeeUtil_1.default.promoterFees(fees);
|
|
237
256
|
return this.calculateFee({
|
|
238
257
|
tickets,
|
|
@@ -242,7 +261,7 @@ class PaymentUtil {
|
|
|
242
261
|
});
|
|
243
262
|
}
|
|
244
263
|
calculateTaxFee(params) {
|
|
245
|
-
let { tickets = [], upgrades = [], fees = [], paymentMethodType
|
|
264
|
+
let { tickets = [], upgrades = [], fees = [], paymentMethodType } = params;
|
|
246
265
|
fees = FeeUtil_1.default.taxFees(fees);
|
|
247
266
|
return this.calculateFeeWithoutTax({
|
|
248
267
|
tickets,
|
|
@@ -252,7 +271,7 @@ class PaymentUtil {
|
|
|
252
271
|
});
|
|
253
272
|
}
|
|
254
273
|
calculatePlatformFee(params) {
|
|
255
|
-
let { tickets = [], upgrades = [], fees = [], paymentMethodType
|
|
274
|
+
let { tickets = [], upgrades = [], fees = [], paymentMethodType } = params;
|
|
256
275
|
fees = FeeUtil_1.default.selloutFees(fees);
|
|
257
276
|
return this.calculateFee({
|
|
258
277
|
tickets,
|
|
@@ -274,6 +293,21 @@ class PaymentUtil {
|
|
|
274
293
|
const organizationFee = this.calculateOrganizationFee(params);
|
|
275
294
|
return total - subtotal - organizationFee;
|
|
276
295
|
}
|
|
296
|
+
// calculateTaxFee(params: IPaymentCalculatorParams): number {
|
|
297
|
+
// const organizationFee = this.calculateTaxFee(params);
|
|
298
|
+
// console.log(organizationFee,'............................salesTax..')
|
|
299
|
+
// return organizationFee;
|
|
300
|
+
// }
|
|
301
|
+
calculateGuestFee(tickets, event) {
|
|
302
|
+
var _a;
|
|
303
|
+
let guestTicketFees = event === null || event === void 0 ? void 0 : event.fees.filter((fee) => fee.filters && fee.filters[0] === IFee_1.FeeFiltersEnum.GuestTicket);
|
|
304
|
+
let guestFeesValue = guestTicketFees && ((_a = guestTicketFees[0]) === null || _a === void 0 ? void 0 : _a.value);
|
|
305
|
+
let guestMembers = tickets.filter((a) => !a.isMemberIdValid).length;
|
|
306
|
+
let guestFees = guestFeesValue * guestMembers;
|
|
307
|
+
return guestTicketFees.length > 0 && event.organization.isTegIntegration
|
|
308
|
+
? guestFees
|
|
309
|
+
: 0;
|
|
310
|
+
}
|
|
277
311
|
}
|
|
278
312
|
exports.default = new PaymentUtil();
|
|
279
313
|
//# sourceMappingURL=PaymentUtil.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentUtil.js","sourceRoot":"","sources":["../../src/utils/PaymentUtil.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;
|
|
1
|
+
{"version":3,"file":"PaymentUtil.js","sourceRoot":"","sources":["../../src/utils/PaymentUtil.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sellout/models",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.162",
|
|
4
4
|
"description": "Sellout.io models",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"license": "MIT",
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@hapi/joi": "^16.1.7",
|
|
20
|
-
"@sellout/utils": "^0.0.
|
|
20
|
+
"@sellout/utils": "^0.0.162",
|
|
21
21
|
"@types/hapi__joi": "^16.0.1",
|
|
22
22
|
"@types/shortid": "^0.0.29",
|
|
23
23
|
"apollo-link-debounce": "^2.1.0",
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"protobufjs": "^6.11.2",
|
|
32
32
|
"typescript": "^4.4.2"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "6c628f19ca3915e3c8ec58980e70d3d58eabeab3"
|
|
35
35
|
}
|
package/src/interfaces/IFee.ts
CHANGED
package/src/utils/PaymentUtil.ts
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import FeeUtil from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import FeeUtil from "./FeeUtil";
|
|
2
|
+
import {
|
|
3
|
+
ICreateOrderTicketParams,
|
|
4
|
+
ICreateOrderUpgradeParams,
|
|
5
|
+
} from "../interfaces/ICreateOrderParams";
|
|
6
|
+
import IFee, {
|
|
7
|
+
FeeAppliedToEnum,
|
|
8
|
+
FeeFiltersEnum,
|
|
9
|
+
FeeTypeEnum,
|
|
10
|
+
} from "../interfaces/IFee";
|
|
11
|
+
import { PaymentMethodTypeEnum } from "../enums/PaymentMethodTypeEnum";
|
|
8
12
|
|
|
9
13
|
interface IPaymentCalculatorParams {
|
|
10
14
|
tickets: ICreateOrderTicketParams[];
|
|
11
15
|
upgrades: ICreateOrderUpgradeParams[];
|
|
12
16
|
fees: IFee[];
|
|
13
|
-
paymentMethodType: PaymentMethodTypeEnum
|
|
17
|
+
paymentMethodType: PaymentMethodTypeEnum;
|
|
14
18
|
}
|
|
15
19
|
|
|
16
20
|
// interface IOrderItems {
|
|
@@ -23,13 +27,12 @@ class PaymentUtil {
|
|
|
23
27
|
// calculateOrderItemPrices(params: IPaymentCalculatorParams): IOrderItems {
|
|
24
28
|
|
|
25
29
|
// let {
|
|
26
|
-
// tickets = [],
|
|
30
|
+
// tickets = [],
|
|
27
31
|
// upgrades = [],
|
|
28
32
|
// fees = [],
|
|
29
33
|
// paymentMethodType,
|
|
30
34
|
// } = params;
|
|
31
35
|
|
|
32
|
-
|
|
33
36
|
// // Filter fees
|
|
34
37
|
// fees = fees.filter((fee: IFee) => {
|
|
35
38
|
// // Ignore card reader fees for non card reader payemnts
|
|
@@ -77,7 +80,7 @@ class PaymentUtil {
|
|
|
77
80
|
// const maxFee = fee.maxAppliedToPrice || Infinity;
|
|
78
81
|
|
|
79
82
|
// if (minFee <= price && price <= maxFee) {
|
|
80
|
-
|
|
83
|
+
// console.log(fee);
|
|
81
84
|
// if (fee.type === FeeTypeEnum.Flat) {
|
|
82
85
|
// return price - fee.value;
|
|
83
86
|
// } if (fee.type === FeeTypeEnum.Percent) {
|
|
@@ -85,7 +88,6 @@ class PaymentUtil {
|
|
|
85
88
|
// }
|
|
86
89
|
// }
|
|
87
90
|
|
|
88
|
-
|
|
89
91
|
// // if(fee.type === FeeTypeEnum.Percent) {
|
|
90
92
|
// // return price * (1 - fee.value / 100);
|
|
91
93
|
// // }
|
|
@@ -111,15 +113,13 @@ class PaymentUtil {
|
|
|
111
113
|
|
|
112
114
|
// tickets = tickets.map((ticket: ICreateOrderTicketParams): ICreateOrderTicketParams => {
|
|
113
115
|
// const price = Math.floor(calculateTicketPrice(ticket));
|
|
114
|
-
|
|
116
|
+
// console.log(`Ticket Price: `, price);
|
|
115
117
|
// return {
|
|
116
118
|
// ...ticket,
|
|
117
119
|
// price,
|
|
118
120
|
// }
|
|
119
121
|
// });
|
|
120
122
|
|
|
121
|
-
|
|
122
|
-
|
|
123
123
|
// // upgrades = upgrades.map((upgrade: ICreateOrderUpgradeParams): ICreateOrderUpgradeParams => {
|
|
124
124
|
// // return {
|
|
125
125
|
// // ...upgrade,
|
|
@@ -133,12 +133,7 @@ class PaymentUtil {
|
|
|
133
133
|
// };
|
|
134
134
|
// },
|
|
135
135
|
calculatePaymentTotal(params: IPaymentCalculatorParams): number {
|
|
136
|
-
let {
|
|
137
|
-
tickets = [],
|
|
138
|
-
upgrades = [],
|
|
139
|
-
fees = [],
|
|
140
|
-
paymentMethodType,
|
|
141
|
-
} = params;
|
|
136
|
+
let { tickets = [], upgrades = [], fees = [], paymentMethodType } = params;
|
|
142
137
|
|
|
143
138
|
// No items, total is always 0
|
|
144
139
|
if (!tickets.length && !upgrades.length) return 0;
|
|
@@ -146,45 +141,73 @@ class PaymentUtil {
|
|
|
146
141
|
// Filter fees
|
|
147
142
|
fees = fees.filter((fee: IFee) => {
|
|
148
143
|
// Ignore card reader fees for non card reader payemnts
|
|
149
|
-
if (
|
|
144
|
+
if (
|
|
145
|
+
fee.filters &&
|
|
146
|
+
fee.filters.includes(FeeFiltersEnum.CardReader) &&
|
|
147
|
+
paymentMethodType !== PaymentMethodTypeEnum.CardReader
|
|
148
|
+
) {
|
|
150
149
|
return false;
|
|
151
150
|
}
|
|
152
151
|
|
|
153
152
|
// Ignore card entry fees for non card entry payemnts
|
|
154
|
-
if (
|
|
153
|
+
if (
|
|
154
|
+
fee.filters &&
|
|
155
|
+
fee.filters.includes(FeeFiltersEnum.CardEntry) &&
|
|
156
|
+
paymentMethodType !== PaymentMethodTypeEnum.CardEntry
|
|
157
|
+
) {
|
|
155
158
|
return false;
|
|
156
159
|
}
|
|
157
160
|
|
|
158
161
|
return true;
|
|
159
162
|
});
|
|
160
163
|
|
|
161
|
-
|
|
164
|
+
fees = fees.filter(
|
|
165
|
+
(fee: IFee) =>
|
|
166
|
+
fee.filters && fee.filters[0] !== FeeFiltersEnum.GuestTicket
|
|
167
|
+
);
|
|
168
|
+
|
|
169
|
+
const ticketFees = fees
|
|
170
|
+
.filter((f) => f.appliedTo === FeeAppliedToEnum.Ticket)
|
|
162
171
|
.sort(({ type }) => {
|
|
163
172
|
if (type === FeeTypeEnum.Flat) return -1;
|
|
164
173
|
else return 1;
|
|
165
|
-
})
|
|
166
|
-
const upgradeFees = fees.filter(
|
|
174
|
+
});
|
|
175
|
+
const upgradeFees = fees.filter(
|
|
176
|
+
(f) => f.appliedTo === FeeAppliedToEnum.Upgrade
|
|
177
|
+
);
|
|
167
178
|
// Orders mattes here. Flat type fees must be applied before Percent type fees
|
|
168
|
-
const orderFees = fees
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
179
|
+
const orderFees = fees
|
|
180
|
+
.filter(
|
|
181
|
+
(f) => f.appliedTo === FeeAppliedToEnum.Order && f.name != "Sales tax"
|
|
182
|
+
)
|
|
183
|
+
.sort(({ type }) => {
|
|
184
|
+
if (type === "Flat") return -1;
|
|
185
|
+
else return 1;
|
|
186
|
+
});
|
|
187
|
+
const salesTax = fees.filter((f) => f.name == "Sales tax");
|
|
173
188
|
|
|
174
|
-
function applyTicketFee(
|
|
189
|
+
function applyTicketFee(
|
|
190
|
+
ticket: ICreateOrderTicketParams,
|
|
191
|
+
fee: IFee
|
|
192
|
+
): number {
|
|
175
193
|
// Ignore seated fees if not seated
|
|
176
|
-
if (
|
|
194
|
+
if (
|
|
195
|
+
fee.filters &&
|
|
196
|
+
fee.filters.includes(FeeFiltersEnum.Seated) &&
|
|
197
|
+
!ticket.seat
|
|
198
|
+
) {
|
|
177
199
|
return 0;
|
|
178
200
|
}
|
|
179
|
-
|
|
201
|
+
|
|
180
202
|
const minFee = fee.minAppliedToPrice || 0;
|
|
181
203
|
const maxFee = fee.maxAppliedToPrice || Infinity;
|
|
182
204
|
|
|
183
205
|
if (minFee <= ticket.price && ticket.price <= maxFee) {
|
|
184
206
|
if (fee.type === FeeTypeEnum.Flat) {
|
|
185
207
|
return fee.value;
|
|
186
|
-
}
|
|
187
|
-
|
|
208
|
+
}
|
|
209
|
+
if (fee.type === FeeTypeEnum.Percent) {
|
|
210
|
+
return (ticket.price * fee.value) / 100;
|
|
188
211
|
}
|
|
189
212
|
} else {
|
|
190
213
|
return 0;
|
|
@@ -193,15 +216,19 @@ class PaymentUtil {
|
|
|
193
216
|
return 0;
|
|
194
217
|
}
|
|
195
218
|
|
|
196
|
-
function applyUpgradeFee(
|
|
219
|
+
function applyUpgradeFee(
|
|
220
|
+
upgrade: ICreateOrderUpgradeParams,
|
|
221
|
+
fee: IFee
|
|
222
|
+
): number {
|
|
197
223
|
const minFee = fee.minAppliedToPrice || 0;
|
|
198
224
|
const maxFee = fee.maxAppliedToPrice || Infinity;
|
|
199
225
|
|
|
200
226
|
if (minFee <= upgrade.price && upgrade.price <= maxFee) {
|
|
201
227
|
if (fee.type === FeeTypeEnum.Flat) {
|
|
202
228
|
return upgrade.price + fee.value;
|
|
203
|
-
}
|
|
204
|
-
|
|
229
|
+
}
|
|
230
|
+
if (fee.type === FeeTypeEnum.Percent) {
|
|
231
|
+
return (upgrade.price * fee.value) / 100;
|
|
205
232
|
}
|
|
206
233
|
} else {
|
|
207
234
|
return 0;
|
|
@@ -213,36 +240,59 @@ class PaymentUtil {
|
|
|
213
240
|
function applyOrderFee(orderSubtotal, fee) {
|
|
214
241
|
if (fee.type === FeeTypeEnum.Flat) {
|
|
215
242
|
return orderSubtotal + fee.value;
|
|
216
|
-
}
|
|
217
|
-
|
|
243
|
+
}
|
|
244
|
+
if (fee.type === FeeTypeEnum.Percent) {
|
|
245
|
+
return orderSubtotal / (1 - fee.value / 100);
|
|
218
246
|
}
|
|
219
247
|
}
|
|
220
248
|
|
|
221
249
|
const ticketTotal = tickets.reduce((cur, ticket) => cur + ticket.price, 0);
|
|
222
250
|
|
|
223
251
|
const ticketTaxFeeTotal = tickets.reduce((cur, ticket) => {
|
|
224
|
-
return
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
252
|
+
return (
|
|
253
|
+
cur +
|
|
254
|
+
salesTax.reduce((cur, fee) => {
|
|
255
|
+
const value = cur + applyTicketFee(ticket, fee);
|
|
256
|
+
return value;
|
|
257
|
+
}, 0)
|
|
258
|
+
);
|
|
228
259
|
}, 0);
|
|
229
260
|
const ticketFeeTotal = tickets.reduce((cur, ticket) => {
|
|
230
|
-
return
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
261
|
+
return (
|
|
262
|
+
cur +
|
|
263
|
+
ticketFees.reduce((cur, fee) => {
|
|
264
|
+
const value = cur + applyTicketFee(ticket, fee);
|
|
265
|
+
return value;
|
|
266
|
+
}, 0)
|
|
267
|
+
);
|
|
234
268
|
}, 0);
|
|
235
269
|
|
|
236
|
-
const upgradeTotal = upgrades.reduce(
|
|
270
|
+
const upgradeTotal = upgrades.reduce(
|
|
271
|
+
(cur, upgrade) => cur + upgrade.price,
|
|
272
|
+
0
|
|
273
|
+
);
|
|
237
274
|
|
|
238
275
|
const upgradeTaxFeeTotal = upgrades.reduce((cur, upgrade) => {
|
|
239
|
-
return
|
|
276
|
+
return (
|
|
277
|
+
cur +
|
|
278
|
+
salesTax.reduce((curr, fee) => curr + applyUpgradeFee(upgrade, fee), 0)
|
|
279
|
+
);
|
|
240
280
|
}, 0);
|
|
241
281
|
|
|
242
282
|
const upgradeFeeTotal = upgrades.reduce((cur, upgrade) => {
|
|
243
|
-
return
|
|
283
|
+
return (
|
|
284
|
+
cur +
|
|
285
|
+
upgradeFees.reduce((cur, fee) => cur + applyUpgradeFee(upgrade, fee), 0)
|
|
286
|
+
);
|
|
244
287
|
}, 0);
|
|
245
|
-
const orderSubtotal = Math.round(
|
|
288
|
+
const orderSubtotal = Math.round(
|
|
289
|
+
ticketTotal +
|
|
290
|
+
ticketTaxFeeTotal +
|
|
291
|
+
ticketFeeTotal +
|
|
292
|
+
upgradeTaxFeeTotal +
|
|
293
|
+
upgradeTotal +
|
|
294
|
+
upgradeFeeTotal
|
|
295
|
+
);
|
|
246
296
|
|
|
247
297
|
// console.log(`Order SubTotal:`, orderSubtotal);
|
|
248
298
|
|
|
@@ -262,37 +312,32 @@ class PaymentUtil {
|
|
|
262
312
|
// fees
|
|
263
313
|
} = params;
|
|
264
314
|
|
|
265
|
-
if(paymentMethodType === PaymentMethodTypeEnum.None) return 0;
|
|
315
|
+
if (paymentMethodType === PaymentMethodTypeEnum.None) return 0;
|
|
266
316
|
|
|
267
|
-
const ticketTotal = tickets.reduce((cur, ticket) => cur + ticket.price
|
|
268
|
-
const upgradeTotal = upgrades.reduce(
|
|
317
|
+
const ticketTotal = tickets.reduce((cur, ticket) => cur + ticket.price, 0); // + (ticket.price * tax/100)
|
|
318
|
+
const upgradeTotal = upgrades.reduce(
|
|
319
|
+
(cur, upgrade) => cur + upgrade.price,
|
|
320
|
+
0
|
|
321
|
+
); // + (upgrade.price * tax/100)
|
|
269
322
|
return ticketTotal + upgradeTotal;
|
|
270
323
|
}
|
|
271
324
|
calculateFee(params: IPaymentCalculatorParams): number {
|
|
272
|
-
let {
|
|
273
|
-
fees
|
|
274
|
-
|
|
275
|
-
const salesTax = fees.filter(f => f.name == 'Sales tax');
|
|
276
|
-
const tax = salesTax.length > 0 ? salesTax[0].value : 0
|
|
325
|
+
let { fees } = params;
|
|
326
|
+
const salesTax = fees.filter((f) => f.name == "Sales tax");
|
|
327
|
+
const tax = salesTax.length > 0 ? salesTax[0].value : 0;
|
|
277
328
|
const total = this.calculatePaymentTotal(params);
|
|
278
329
|
let subtotal = this.calculatePaymentSubtotal(params);
|
|
279
|
-
subtotal = subtotal + (subtotal*tax/100
|
|
330
|
+
subtotal = subtotal + (subtotal * tax) / 100;
|
|
280
331
|
return Math.round(total - subtotal);
|
|
281
332
|
}
|
|
282
333
|
|
|
283
334
|
calculateFeeWithoutTax(params: IPaymentCalculatorParams): number {
|
|
284
|
-
|
|
285
335
|
const total = this.calculatePaymentTotal(params);
|
|
286
336
|
let subtotal = this.calculatePaymentSubtotal(params);
|
|
287
337
|
return Math.round(total - subtotal);
|
|
288
338
|
}
|
|
289
339
|
calculateOrganizationFee(params: IPaymentCalculatorParams): number {
|
|
290
|
-
let {
|
|
291
|
-
tickets = [],
|
|
292
|
-
upgrades = [],
|
|
293
|
-
fees = [],
|
|
294
|
-
paymentMethodType,
|
|
295
|
-
} = params;
|
|
340
|
+
let { tickets = [], upgrades = [], fees = [], paymentMethodType } = params;
|
|
296
341
|
|
|
297
342
|
fees = FeeUtil.promoterFees(fees);
|
|
298
343
|
return this.calculateFee({
|
|
@@ -303,14 +348,8 @@ class PaymentUtil {
|
|
|
303
348
|
});
|
|
304
349
|
}
|
|
305
350
|
|
|
306
|
-
|
|
307
351
|
calculateTaxFee(params: IPaymentCalculatorParams): number {
|
|
308
|
-
let {
|
|
309
|
-
tickets = [],
|
|
310
|
-
upgrades = [],
|
|
311
|
-
fees = [],
|
|
312
|
-
paymentMethodType,
|
|
313
|
-
} = params;
|
|
352
|
+
let { tickets = [], upgrades = [], fees = [], paymentMethodType } = params;
|
|
314
353
|
|
|
315
354
|
fees = FeeUtil.taxFees(fees);
|
|
316
355
|
return this.calculateFeeWithoutTax({
|
|
@@ -321,12 +360,7 @@ class PaymentUtil {
|
|
|
321
360
|
});
|
|
322
361
|
}
|
|
323
362
|
calculatePlatformFee(params: IPaymentCalculatorParams): number {
|
|
324
|
-
let {
|
|
325
|
-
tickets = [],
|
|
326
|
-
upgrades = [],
|
|
327
|
-
fees = [],
|
|
328
|
-
paymentMethodType,
|
|
329
|
-
} = params;
|
|
363
|
+
let { tickets = [], upgrades = [], fees = [], paymentMethodType } = params;
|
|
330
364
|
|
|
331
365
|
fees = FeeUtil.selloutFees(fees);
|
|
332
366
|
|
|
@@ -348,7 +382,7 @@ class PaymentUtil {
|
|
|
348
382
|
const total = this.calculatePaymentTotal(params);
|
|
349
383
|
const subtotal = this.calculatePaymentSubtotal(params);
|
|
350
384
|
const organizationFee = this.calculateOrganizationFee(params);
|
|
351
|
-
return total - subtotal
|
|
385
|
+
return total - subtotal - organizationFee;
|
|
352
386
|
}
|
|
353
387
|
// calculateTaxFee(params: IPaymentCalculatorParams): number {
|
|
354
388
|
// const organizationFee = this.calculateTaxFee(params);
|
|
@@ -356,6 +390,19 @@ class PaymentUtil {
|
|
|
356
390
|
// return organizationFee;
|
|
357
391
|
// }
|
|
358
392
|
|
|
393
|
+
calculateGuestFee(tickets: any, event: any): number {
|
|
394
|
+
let guestTicketFees = event?.fees.filter(
|
|
395
|
+
(fee: IFee) =>
|
|
396
|
+
fee.filters && fee.filters[0] === FeeFiltersEnum.GuestTicket
|
|
397
|
+
);
|
|
398
|
+
let guestFeesValue = guestTicketFees && guestTicketFees[0]?.value;
|
|
399
|
+
let guestMembers = tickets.filter((a) => !a.isMemberIdValid).length;
|
|
400
|
+
|
|
401
|
+
let guestFees = (guestFeesValue as number) * guestMembers;
|
|
402
|
+
return guestTicketFees.length > 0 && event.organization.isTegIntegration
|
|
403
|
+
? guestFees
|
|
404
|
+
: 0;
|
|
405
|
+
}
|
|
359
406
|
}
|
|
360
407
|
|
|
361
408
|
export default new PaymentUtil();
|