@sellout/models 0.0.185 → 0.0.186
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/queries/order.query.js +1 -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/interfaces/IFee.d.ts +1 -0
- package/.dist/schemas/Order.d.ts +1 -1
- package/.dist/schemas/Order.js +1 -1
- package/.dist/sellout-proto.js +394 -9
- package/.dist/utils/OrderUtil.js +111 -73
- package/.dist/utils/OrderUtil.js.map +1 -1
- package/.dist/utils/PaymentUtil.d.ts +1 -0
- package/.dist/utils/PaymentUtil.js +10 -0
- package/.dist/utils/PaymentUtil.js.map +1 -1
- package/package.json +3 -3
- package/src/graphql/queries/order.query.ts +1 -0
- package/src/graphql/queries/orders.query.ts +1 -0
- package/src/interfaces/IFee.ts +2 -0
- package/src/proto/fee.proto +1 -0
- package/src/proto/order.proto +12 -1
- package/src/schemas/Order.ts +1 -1
- package/src/utils/OrderUtil.ts +127 -82
- package/src/utils/PaymentUtil.ts +22 -0
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
|
-
}).total
|
|
31
|
+
}).total || 0;
|
|
32
32
|
}, 0);
|
|
33
33
|
} else {
|
|
34
34
|
if (
|
|
@@ -40,94 +40,121 @@ export default {
|
|
|
40
40
|
if (!order.tickets) order.tickets = [];
|
|
41
41
|
if (!order.upgrades) order.upgrades = [];
|
|
42
42
|
|
|
43
|
-
|
|
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
|
-
}
|
|
43
|
+
// console.log("order ++++++++++>>>",order);
|
|
65
44
|
|
|
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
|
-
}
|
|
83
45
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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);
|
|
136
|
+
|
|
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
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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 +
|
|
118
|
-
|
|
119
|
-
|
|
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
|
|
|
@@ -180,14 +207,32 @@ export default {
|
|
|
180
207
|
return this.orderTotalWithRefund(order, promoterFees);
|
|
181
208
|
},
|
|
182
209
|
orderSubtotal(order: IOrder): number {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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
|
|
189
224
|
})
|
|
190
|
-
}
|
|
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);
|
|
191
236
|
|
|
192
237
|
return subTotal || 0
|
|
193
238
|
},
|
package/src/utils/PaymentUtil.ts
CHANGED
|
@@ -568,6 +568,28 @@ class PaymentUtil {
|
|
|
568
568
|
); // + (upgrade.price * tax/100)
|
|
569
569
|
return ticketTotal + upgradeTotal;
|
|
570
570
|
}
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
calculatePaymentSubtotalValue(params: any): number {
|
|
574
|
+
let {
|
|
575
|
+
tickets = [],
|
|
576
|
+
upgrades = [],
|
|
577
|
+
// paymentMethodType,
|
|
578
|
+
// fees
|
|
579
|
+
} = params;
|
|
580
|
+
|
|
581
|
+
// if (paymentMethodType === PaymentMethodTypeEnum.None) return 0;
|
|
582
|
+
|
|
583
|
+
const ticketTotal = tickets.reduce((cur, ticket) => cur + ticket.price, 0); // + (ticket.price * tax/100)
|
|
584
|
+
const upgradeTotal = upgrades.reduce(
|
|
585
|
+
(cur, upgrade) => cur + upgrade.price,
|
|
586
|
+
0
|
|
587
|
+
); // + (upgrade.price * tax/100)
|
|
588
|
+
return ticketTotal + upgradeTotal;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
571
593
|
calculateFee(params: IPaymentCalculatorParams): number {
|
|
572
594
|
let { fees } = params;
|
|
573
595
|
const salesTax = fees.filter((f) => f.name == "Sales tax");
|