@stamhoofd/structures 2.5.0 → 2.7.0
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/index.d.ts +1 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -7
- package/dist/index.js.map +1 -1
- package/dist/src/BalanceItemDetailed.d.ts +11 -3
- package/dist/src/BalanceItemDetailed.d.ts.map +1 -1
- package/dist/src/BalanceItemDetailed.js +15 -7
- package/dist/src/BalanceItemDetailed.js.map +1 -1
- package/dist/src/Event.d.ts +2 -1
- package/dist/src/Event.d.ts.map +1 -1
- package/dist/src/Event.js +7 -3
- package/dist/src/Event.js.map +1 -1
- package/dist/src/Group.d.ts +5 -0
- package/dist/src/Group.d.ts.map +1 -1
- package/dist/src/Group.js +8 -1
- package/dist/src/Group.js.map +1 -1
- package/dist/src/GroupSettings.d.ts +58 -19
- package/dist/src/GroupSettings.d.ts.map +1 -1
- package/dist/src/GroupSettings.js +188 -34
- package/dist/src/GroupSettings.js.map +1 -1
- package/dist/src/RegistrationPeriod.d.ts +1 -0
- package/dist/src/RegistrationPeriod.d.ts.map +1 -1
- package/dist/src/RegistrationPeriod.js +3 -0
- package/dist/src/RegistrationPeriod.js.map +1 -1
- package/dist/src/StockReservation.d.ts +20 -0
- package/dist/src/StockReservation.d.ts.map +1 -0
- package/dist/src/StockReservation.js +91 -0
- package/dist/src/StockReservation.js.map +1 -0
- package/dist/src/Version.d.ts +1 -1
- package/dist/src/Version.js +1 -1
- package/dist/src/addresses/Address.d.ts +4 -0
- package/dist/src/addresses/Address.d.ts.map +1 -1
- package/dist/src/addresses/Address.js +6 -0
- package/dist/src/addresses/Address.js.map +1 -1
- package/dist/src/email/EditorSmartVariable.d.ts.map +1 -1
- package/dist/src/email/EditorSmartVariable.js +7 -11
- package/dist/src/email/EditorSmartVariable.js.map +1 -1
- package/dist/src/email/Email.d.ts +4 -3
- package/dist/src/email/Email.d.ts.map +1 -1
- package/dist/src/email/Email.js +5 -4
- package/dist/src/email/Email.js.map +1 -1
- package/dist/src/members/Member.d.ts +7 -0
- package/dist/src/members/Member.d.ts.map +1 -1
- package/dist/src/members/Member.js +34 -1
- package/dist/src/members/Member.js.map +1 -1
- package/dist/src/members/MemberDetails.d.ts +8 -11
- package/dist/src/members/MemberDetails.d.ts.map +1 -1
- package/dist/src/members/MemberDetails.js +92 -51
- package/dist/src/members/MemberDetails.js.map +1 -1
- package/dist/src/members/MemberPlatformMembership.d.ts +1 -0
- package/dist/src/members/MemberPlatformMembership.d.ts.map +1 -1
- package/dist/src/members/MemberPlatformMembership.js +3 -0
- package/dist/src/members/MemberPlatformMembership.js.map +1 -1
- package/dist/src/members/MemberWithRegistrationsBlob.d.ts +1 -1
- package/dist/src/members/MemberWithRegistrationsBlob.d.ts.map +1 -1
- package/dist/src/members/MemberWithRegistrationsBlob.js +35 -12
- package/dist/src/members/MemberWithRegistrationsBlob.js.map +1 -1
- package/dist/src/members/PaymentDetailed.d.ts +3 -0
- package/dist/src/members/PaymentDetailed.d.ts.map +1 -1
- package/dist/src/members/PaymentDetailed.js +7 -8
- package/dist/src/members/PaymentDetailed.js.map +1 -1
- package/dist/src/members/PaymentGeneral.d.ts +5 -2
- package/dist/src/members/PaymentGeneral.d.ts.map +1 -1
- package/dist/src/members/PaymentGeneral.js +3 -5
- package/dist/src/members/PaymentGeneral.js.map +1 -1
- package/dist/src/members/PlatformMember.d.ts +6 -2
- package/dist/src/members/PlatformMember.d.ts.map +1 -1
- package/dist/src/members/PlatformMember.js +68 -18
- package/dist/src/members/PlatformMember.js.map +1 -1
- package/dist/src/members/Registration.d.ts +12 -0
- package/dist/src/members/Registration.d.ts.map +1 -1
- package/dist/src/members/Registration.js +18 -3
- package/dist/src/members/Registration.js.map +1 -1
- package/dist/src/members/RegistrationWithMember.d.ts +3 -2
- package/dist/src/members/RegistrationWithMember.d.ts.map +1 -1
- package/dist/src/members/RegistrationWithMember.js +7 -1
- package/dist/src/members/RegistrationWithMember.js.map +1 -1
- package/dist/src/members/checkout/BalanceItemCartItem.d.ts +3 -1
- package/dist/src/members/checkout/BalanceItemCartItem.d.ts.map +1 -1
- package/dist/src/members/checkout/BalanceItemCartItem.js +11 -9
- package/dist/src/members/checkout/BalanceItemCartItem.js.map +1 -1
- package/dist/src/members/checkout/RegisterCart.d.ts +16 -2
- package/dist/src/members/checkout/RegisterCart.d.ts.map +1 -1
- package/dist/src/members/checkout/RegisterCart.js +95 -17
- package/dist/src/members/checkout/RegisterCart.js.map +1 -1
- package/dist/src/members/checkout/RegisterCheckout.d.ts +19 -0
- package/dist/src/members/checkout/RegisterCheckout.d.ts.map +1 -1
- package/dist/src/members/checkout/RegisterCheckout.js +38 -1
- package/dist/src/members/checkout/RegisterCheckout.js.map +1 -1
- package/dist/src/members/checkout/RegisterItem.d.ts +37 -19
- package/dist/src/members/checkout/RegisterItem.d.ts.map +1 -1
- package/dist/src/members/checkout/RegisterItem.js +283 -118
- package/dist/src/members/checkout/RegisterItem.js.map +1 -1
- package/esm/dist/index.d.ts +1 -7
- package/esm/dist/index.d.ts.map +1 -1
- package/esm/dist/index.js +1 -7
- package/esm/dist/index.js.map +1 -1
- package/esm/dist/src/BalanceItemDetailed.d.ts +11 -3
- package/esm/dist/src/BalanceItemDetailed.d.ts.map +1 -1
- package/esm/dist/src/BalanceItemDetailed.js +15 -7
- package/esm/dist/src/BalanceItemDetailed.js.map +1 -1
- package/esm/dist/src/Event.d.ts +2 -1
- package/esm/dist/src/Event.d.ts.map +1 -1
- package/esm/dist/src/Event.js +7 -3
- package/esm/dist/src/Event.js.map +1 -1
- package/esm/dist/src/Group.d.ts +5 -0
- package/esm/dist/src/Group.d.ts.map +1 -1
- package/esm/dist/src/Group.js +9 -2
- package/esm/dist/src/Group.js.map +1 -1
- package/esm/dist/src/GroupSettings.d.ts +58 -19
- package/esm/dist/src/GroupSettings.d.ts.map +1 -1
- package/esm/dist/src/GroupSettings.js +188 -34
- package/esm/dist/src/GroupSettings.js.map +1 -1
- package/esm/dist/src/RegistrationPeriod.d.ts +1 -0
- package/esm/dist/src/RegistrationPeriod.d.ts.map +1 -1
- package/esm/dist/src/RegistrationPeriod.js +3 -0
- package/esm/dist/src/RegistrationPeriod.js.map +1 -1
- package/esm/dist/src/StockReservation.d.ts +20 -0
- package/esm/dist/src/StockReservation.d.ts.map +1 -0
- package/esm/dist/src/StockReservation.js +87 -0
- package/esm/dist/src/StockReservation.js.map +1 -0
- package/esm/dist/src/Version.d.ts +1 -1
- package/esm/dist/src/Version.js +1 -1
- package/esm/dist/src/addresses/Address.d.ts +4 -0
- package/esm/dist/src/addresses/Address.d.ts.map +1 -1
- package/esm/dist/src/addresses/Address.js +6 -0
- package/esm/dist/src/addresses/Address.js.map +1 -1
- package/esm/dist/src/email/EditorSmartVariable.d.ts.map +1 -1
- package/esm/dist/src/email/EditorSmartVariable.js +8 -12
- package/esm/dist/src/email/EditorSmartVariable.js.map +1 -1
- package/esm/dist/src/email/Email.d.ts +4 -3
- package/esm/dist/src/email/Email.d.ts.map +1 -1
- package/esm/dist/src/email/Email.js +5 -4
- package/esm/dist/src/email/Email.js.map +1 -1
- package/esm/dist/src/members/Member.d.ts +7 -0
- package/esm/dist/src/members/Member.d.ts.map +1 -1
- package/esm/dist/src/members/Member.js +32 -0
- package/esm/dist/src/members/Member.js.map +1 -1
- package/esm/dist/src/members/MemberDetails.d.ts +8 -11
- package/esm/dist/src/members/MemberDetails.d.ts.map +1 -1
- package/esm/dist/src/members/MemberDetails.js +92 -51
- package/esm/dist/src/members/MemberDetails.js.map +1 -1
- package/esm/dist/src/members/MemberPlatformMembership.d.ts +1 -0
- package/esm/dist/src/members/MemberPlatformMembership.d.ts.map +1 -1
- package/esm/dist/src/members/MemberPlatformMembership.js +3 -0
- package/esm/dist/src/members/MemberPlatformMembership.js.map +1 -1
- package/esm/dist/src/members/MemberWithRegistrationsBlob.d.ts +1 -1
- package/esm/dist/src/members/MemberWithRegistrationsBlob.d.ts.map +1 -1
- package/esm/dist/src/members/MemberWithRegistrationsBlob.js +35 -12
- package/esm/dist/src/members/MemberWithRegistrationsBlob.js.map +1 -1
- package/esm/dist/src/members/PaymentDetailed.d.ts +3 -0
- package/esm/dist/src/members/PaymentDetailed.d.ts.map +1 -1
- package/esm/dist/src/members/PaymentDetailed.js +7 -8
- package/esm/dist/src/members/PaymentDetailed.js.map +1 -1
- package/esm/dist/src/members/PaymentGeneral.d.ts +5 -2
- package/esm/dist/src/members/PaymentGeneral.d.ts.map +1 -1
- package/esm/dist/src/members/PaymentGeneral.js +3 -5
- package/esm/dist/src/members/PaymentGeneral.js.map +1 -1
- package/esm/dist/src/members/PlatformMember.d.ts +6 -2
- package/esm/dist/src/members/PlatformMember.d.ts.map +1 -1
- package/esm/dist/src/members/PlatformMember.js +68 -18
- package/esm/dist/src/members/PlatformMember.js.map +1 -1
- package/esm/dist/src/members/Registration.d.ts +12 -0
- package/esm/dist/src/members/Registration.d.ts.map +1 -1
- package/esm/dist/src/members/Registration.js +19 -4
- package/esm/dist/src/members/Registration.js.map +1 -1
- package/esm/dist/src/members/RegistrationWithMember.d.ts +3 -2
- package/esm/dist/src/members/RegistrationWithMember.d.ts.map +1 -1
- package/esm/dist/src/members/RegistrationWithMember.js +8 -2
- package/esm/dist/src/members/RegistrationWithMember.js.map +1 -1
- package/esm/dist/src/members/checkout/BalanceItemCartItem.d.ts +3 -1
- package/esm/dist/src/members/checkout/BalanceItemCartItem.d.ts.map +1 -1
- package/esm/dist/src/members/checkout/BalanceItemCartItem.js +11 -9
- package/esm/dist/src/members/checkout/BalanceItemCartItem.js.map +1 -1
- package/esm/dist/src/members/checkout/RegisterCart.d.ts +16 -2
- package/esm/dist/src/members/checkout/RegisterCart.d.ts.map +1 -1
- package/esm/dist/src/members/checkout/RegisterCart.js +96 -18
- package/esm/dist/src/members/checkout/RegisterCart.js.map +1 -1
- package/esm/dist/src/members/checkout/RegisterCheckout.d.ts +19 -0
- package/esm/dist/src/members/checkout/RegisterCheckout.d.ts.map +1 -1
- package/esm/dist/src/members/checkout/RegisterCheckout.js +38 -1
- package/esm/dist/src/members/checkout/RegisterCheckout.js.map +1 -1
- package/esm/dist/src/members/checkout/RegisterItem.d.ts +37 -19
- package/esm/dist/src/members/checkout/RegisterItem.d.ts.map +1 -1
- package/esm/dist/src/members/checkout/RegisterItem.js +283 -118
- package/esm/dist/src/members/checkout/RegisterItem.js.map +1 -1
- package/package.json +2 -2
- package/dist/src/members/MemberWithRegistrations.d.ts +0 -52
- package/dist/src/members/MemberWithRegistrations.d.ts.map +0 -1
- package/dist/src/members/MemberWithRegistrations.js +0 -156
- package/dist/src/members/MemberWithRegistrations.js.map +0 -1
- package/dist/src/members/checkout/OldRegisterCart.d.ts +0 -50
- package/dist/src/members/checkout/OldRegisterCart.d.ts.map +0 -1
- package/dist/src/members/checkout/OldRegisterCart.js +0 -207
- package/dist/src/members/checkout/OldRegisterCart.js.map +0 -1
- package/dist/src/members/checkout/OldRegisterCartPriceCalculator.d.ts +0 -36
- package/dist/src/members/checkout/OldRegisterCartPriceCalculator.d.ts.map +0 -1
- package/dist/src/members/checkout/OldRegisterCartPriceCalculator.js +0 -339
- package/dist/src/members/checkout/OldRegisterCartPriceCalculator.js.map +0 -1
- package/dist/src/members/checkout/OldRegisterCartValidator.d.ts +0 -35
- package/dist/src/members/checkout/OldRegisterCartValidator.d.ts.map +0 -1
- package/dist/src/members/checkout/OldRegisterCartValidator.js +0 -309
- package/dist/src/members/checkout/OldRegisterCartValidator.js.map +0 -1
- package/dist/src/members/checkout/OldRegisterCheckout.d.ts +0 -22
- package/dist/src/members/checkout/OldRegisterCheckout.d.ts.map +0 -1
- package/dist/src/members/checkout/OldRegisterCheckout.js +0 -46
- package/dist/src/members/checkout/OldRegisterCheckout.js.map +0 -1
- package/dist/src/members/checkout/OldRegisterItem.d.ts +0 -46
- package/dist/src/members/checkout/OldRegisterItem.d.ts.map +0 -1
- package/dist/src/members/checkout/OldRegisterItem.js +0 -89
- package/dist/src/members/checkout/OldRegisterItem.js.map +0 -1
- package/dist/src/members/checkout/RegisterCartPriceCalculator.test.d.ts +0 -2
- package/dist/src/members/checkout/RegisterCartPriceCalculator.test.d.ts.map +0 -1
- package/dist/src/members/checkout/RegisterCartPriceCalculator.test.js +0 -1076
- package/dist/src/members/checkout/RegisterCartPriceCalculator.test.js.map +0 -1
- package/dist/src/members/checkout/UnknownMemberWithRegistrations.d.ts +0 -23
- package/dist/src/members/checkout/UnknownMemberWithRegistrations.d.ts.map +0 -1
- package/dist/src/members/checkout/UnknownMemberWithRegistrations.js +0 -3
- package/dist/src/members/checkout/UnknownMemberWithRegistrations.js.map +0 -1
- package/esm/dist/src/members/MemberWithRegistrations.d.ts +0 -52
- package/esm/dist/src/members/MemberWithRegistrations.d.ts.map +0 -1
- package/esm/dist/src/members/MemberWithRegistrations.js +0 -152
- package/esm/dist/src/members/MemberWithRegistrations.js.map +0 -1
- package/esm/dist/src/members/checkout/OldRegisterCart.d.ts +0 -50
- package/esm/dist/src/members/checkout/OldRegisterCart.d.ts.map +0 -1
- package/esm/dist/src/members/checkout/OldRegisterCart.js +0 -202
- package/esm/dist/src/members/checkout/OldRegisterCart.js.map +0 -1
- package/esm/dist/src/members/checkout/OldRegisterCartPriceCalculator.d.ts +0 -36
- package/esm/dist/src/members/checkout/OldRegisterCartPriceCalculator.d.ts.map +0 -1
- package/esm/dist/src/members/checkout/OldRegisterCartPriceCalculator.js +0 -334
- package/esm/dist/src/members/checkout/OldRegisterCartPriceCalculator.js.map +0 -1
- package/esm/dist/src/members/checkout/OldRegisterCartValidator.d.ts +0 -35
- package/esm/dist/src/members/checkout/OldRegisterCartValidator.d.ts.map +0 -1
- package/esm/dist/src/members/checkout/OldRegisterCartValidator.js +0 -305
- package/esm/dist/src/members/checkout/OldRegisterCartValidator.js.map +0 -1
- package/esm/dist/src/members/checkout/OldRegisterCheckout.d.ts +0 -22
- package/esm/dist/src/members/checkout/OldRegisterCheckout.d.ts.map +0 -1
- package/esm/dist/src/members/checkout/OldRegisterCheckout.js +0 -41
- package/esm/dist/src/members/checkout/OldRegisterCheckout.js.map +0 -1
- package/esm/dist/src/members/checkout/OldRegisterItem.d.ts +0 -46
- package/esm/dist/src/members/checkout/OldRegisterItem.d.ts.map +0 -1
- package/esm/dist/src/members/checkout/OldRegisterItem.js +0 -84
- package/esm/dist/src/members/checkout/OldRegisterItem.js.map +0 -1
- package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.test.d.ts +0 -2
- package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.test.d.ts.map +0 -1
- package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.test.js +0 -1074
- package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.test.js.map +0 -1
- package/esm/dist/src/members/checkout/UnknownMemberWithRegistrations.d.ts +0 -23
- package/esm/dist/src/members/checkout/UnknownMemberWithRegistrations.d.ts.map +0 -1
- package/esm/dist/src/members/checkout/UnknownMemberWithRegistrations.js +0 -2
- package/esm/dist/src/members/checkout/UnknownMemberWithRegistrations.js.map +0 -1
|
@@ -4,9 +4,10 @@ exports.RegisterItem = exports.IDRegisterItem = exports.RegisterItemOption = voi
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const simple_encoding_1 = require("@simonbackx/simple-encoding");
|
|
6
6
|
const simple_errors_1 = require("@simonbackx/simple-errors");
|
|
7
|
-
const utility_1 = require("@stamhoofd/utility");
|
|
8
|
-
const GroupSettings_1 = require("../../GroupSettings");
|
|
9
7
|
const uuid_1 = require("uuid");
|
|
8
|
+
const Group_1 = require("../../Group");
|
|
9
|
+
const GroupSettings_1 = require("../../GroupSettings");
|
|
10
|
+
const StockReservation_1 = require("../../StockReservation");
|
|
10
11
|
class RegisterItemOption extends simple_encoding_1.AutoEncoder {
|
|
11
12
|
constructor() {
|
|
12
13
|
super(...arguments);
|
|
@@ -67,9 +68,13 @@ class RegisterItem {
|
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
70
|
constructor(data) {
|
|
70
|
-
var _a, _b, _c;
|
|
71
|
+
var _a, _b, _c, _d, _e;
|
|
71
72
|
this.options = [];
|
|
72
73
|
this.calculatedPrice = 0;
|
|
74
|
+
/**
|
|
75
|
+
* These registrations will be replaced as part of this new registration (moving or updating a registration is possible this way)
|
|
76
|
+
*/
|
|
77
|
+
this.replaceRegistrations = [];
|
|
73
78
|
/**
|
|
74
79
|
* Show an error in the cart for recovery
|
|
75
80
|
*/
|
|
@@ -77,12 +82,10 @@ class RegisterItem {
|
|
|
77
82
|
this.id = (_a = data.id) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)();
|
|
78
83
|
this.member = data.member;
|
|
79
84
|
this.group = data.group;
|
|
80
|
-
|
|
81
|
-
throw new Error("Group has no prices");
|
|
82
|
-
}
|
|
83
|
-
this.groupPrice = (_b = data.groupPrice) !== null && _b !== void 0 ? _b : this.group.settings.prices[0];
|
|
85
|
+
this.groupPrice = (_c = (_b = data.groupPrice) !== null && _b !== void 0 ? _b : this.group.settings.prices[0]) !== null && _c !== void 0 ? _c : GroupSettings_1.GroupPrice.create({ name: 'Ongeldig tarief', id: '' });
|
|
84
86
|
this.organization = data.organization;
|
|
85
|
-
this.options = (
|
|
87
|
+
this.options = (_d = data.options) !== null && _d !== void 0 ? _d : [];
|
|
88
|
+
this.replaceRegistrations = (_e = data.replaceRegistrations) !== null && _e !== void 0 ? _e : [];
|
|
86
89
|
// Select all defaults
|
|
87
90
|
for (const optionMenu of this.group.settings.optionMenus) {
|
|
88
91
|
if (!optionMenu.multipleChoice) {
|
|
@@ -97,14 +100,46 @@ class RegisterItem {
|
|
|
97
100
|
}
|
|
98
101
|
}
|
|
99
102
|
}
|
|
103
|
+
get isInCart() {
|
|
104
|
+
return this.member.family.checkout.cart.contains(this);
|
|
105
|
+
}
|
|
100
106
|
get showItemView() {
|
|
101
|
-
return this.shouldUseWaitingList() || this.group.settings.prices.length > 1 || this.group.settings.optionMenus.length > 0;
|
|
107
|
+
return this.shouldUseWaitingList() || this.replaceRegistrations.length || this.group.settings.prices.length > 1 || this.group.settings.optionMenus.length > 0 || (!this.isInCart && !this.isValid);
|
|
102
108
|
}
|
|
103
109
|
calculatePrice() {
|
|
104
110
|
this.calculatedPrice = this.groupPrice.price.forMember(this.member);
|
|
105
111
|
for (const option of this.options) {
|
|
106
112
|
this.calculatedPrice += option.option.price.forMember(this.member) * option.amount;
|
|
107
113
|
}
|
|
114
|
+
for (const registration of this.replaceRegistrations) {
|
|
115
|
+
this.calculatedPrice -= registration.price;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
get priceBreakown() {
|
|
119
|
+
let all = [];
|
|
120
|
+
let replacePrice = 0;
|
|
121
|
+
for (const registration of this.replaceRegistrations) {
|
|
122
|
+
replacePrice += registration.price;
|
|
123
|
+
all.push({
|
|
124
|
+
name: 'Terugbetaling ' + registration.group.settings.name,
|
|
125
|
+
price: -registration.price
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
const subtotal = this.calculatedPrice + replacePrice;
|
|
129
|
+
all = all.filter(a => a.price !== 0);
|
|
130
|
+
if (all.length > 0) {
|
|
131
|
+
all.unshift({
|
|
132
|
+
name: 'Subtotaal',
|
|
133
|
+
price: subtotal
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
return [
|
|
137
|
+
...all,
|
|
138
|
+
{
|
|
139
|
+
name: 'Totaal',
|
|
140
|
+
price: this.calculatedPrice
|
|
141
|
+
}
|
|
142
|
+
];
|
|
108
143
|
}
|
|
109
144
|
clone() {
|
|
110
145
|
return new RegisterItem({
|
|
@@ -113,7 +148,8 @@ class RegisterItem {
|
|
|
113
148
|
group: this.group,
|
|
114
149
|
organization: this.organization,
|
|
115
150
|
groupPrice: this.groupPrice.clone(),
|
|
116
|
-
options: this.options.map(o => o.clone())
|
|
151
|
+
options: this.options.map(o => o.clone()),
|
|
152
|
+
replaceRegistrations: this.replaceRegistrations.map(r => r.clone())
|
|
117
153
|
});
|
|
118
154
|
}
|
|
119
155
|
copyFrom(item) {
|
|
@@ -121,22 +157,22 @@ class RegisterItem {
|
|
|
121
157
|
this.options = item.options.map(o => o.clone());
|
|
122
158
|
this.calculatedPrice = item.calculatedPrice;
|
|
123
159
|
}
|
|
124
|
-
getFilteredPrices(
|
|
160
|
+
getFilteredPrices() {
|
|
125
161
|
return this.group.settings.prices.filter(p => {
|
|
126
|
-
if (p.hidden && !
|
|
162
|
+
if (p.hidden && !this.checkout.isAdminFromSameOrganization) {
|
|
127
163
|
return false;
|
|
128
164
|
}
|
|
129
165
|
return true;
|
|
130
166
|
});
|
|
131
167
|
}
|
|
132
|
-
getFilteredOptionMenus(
|
|
168
|
+
getFilteredOptionMenus() {
|
|
133
169
|
return this.group.settings.optionMenus.filter(p => {
|
|
134
|
-
return this.getFilteredOptions(p
|
|
170
|
+
return this.getFilteredOptions(p).length > 0;
|
|
135
171
|
});
|
|
136
172
|
}
|
|
137
|
-
getFilteredOptions(menu
|
|
173
|
+
getFilteredOptions(menu) {
|
|
138
174
|
return menu.options.filter(p => {
|
|
139
|
-
if (p.hidden && !
|
|
175
|
+
if (p.hidden && !this.checkout.isAdminFromSameOrganization) {
|
|
140
176
|
return false;
|
|
141
177
|
}
|
|
142
178
|
return true;
|
|
@@ -177,6 +213,10 @@ class RegisterItem {
|
|
|
177
213
|
group,
|
|
178
214
|
organization
|
|
179
215
|
});
|
|
216
|
+
//if (item.shouldUseWaitingList() && group.waitingList) {
|
|
217
|
+
// group = group.waitingList
|
|
218
|
+
// item = RegisterItem.defaultFor(member, group, organization);
|
|
219
|
+
//}
|
|
180
220
|
return item;
|
|
181
221
|
}
|
|
182
222
|
/**
|
|
@@ -185,16 +225,25 @@ class RegisterItem {
|
|
|
185
225
|
refresh(group) {
|
|
186
226
|
this.group = group;
|
|
187
227
|
const errors = new simple_errors_1.SimpleErrors();
|
|
188
|
-
|
|
189
|
-
if (!groupPrice) {
|
|
228
|
+
if (this.group.settings.prices.length === 0) {
|
|
190
229
|
errors.addError(new simple_errors_1.SimpleError({
|
|
191
230
|
code: "product_unavailable",
|
|
192
231
|
message: "Product unavailable",
|
|
193
|
-
human: "
|
|
232
|
+
human: "Er is iets fout met de tariefinstellingen van " + this.group.settings.name + ", waardoor je nu niet kan inschrijven. Neem contact op met een beheerder en vraag de tariefinstellingen na te kijken."
|
|
194
233
|
}));
|
|
195
234
|
}
|
|
196
235
|
else {
|
|
197
|
-
|
|
236
|
+
const groupPrice = this.group.settings.prices.find(p => p.id === this.groupPrice.id);
|
|
237
|
+
if (!groupPrice) {
|
|
238
|
+
errors.addError(new simple_errors_1.SimpleError({
|
|
239
|
+
code: "product_unavailable",
|
|
240
|
+
message: "Product unavailable",
|
|
241
|
+
human: "Eén of meerdere tarieven van " + this.group.settings.name + " zijn niet meer beschikbaar"
|
|
242
|
+
}));
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
this.groupPrice = groupPrice;
|
|
246
|
+
}
|
|
198
247
|
}
|
|
199
248
|
// Check all options
|
|
200
249
|
const remainingMenus = this.group.settings.optionMenus.slice();
|
|
@@ -238,17 +287,18 @@ class RegisterItem {
|
|
|
238
287
|
errors.throwIfNotEmpty();
|
|
239
288
|
}
|
|
240
289
|
isAlreadyRegistered() {
|
|
241
|
-
return !!this.member.member.registrations.find(r => r.groupId === this.group.id &&
|
|
290
|
+
return !!this.member.member.registrations.find(r => r.groupId === this.group.id && r.registeredAt !== null && r.deactivatedAt === null);
|
|
242
291
|
}
|
|
243
292
|
hasReachedCategoryMaximum() {
|
|
293
|
+
if (this.group.type !== Group_1.GroupType.Membership) {
|
|
294
|
+
return false;
|
|
295
|
+
}
|
|
244
296
|
const parents = this.group.getParentCategories(this.organization.period.settings.categories, false);
|
|
245
297
|
for (const parent of parents) {
|
|
246
298
|
if (parent.settings.maximumRegistrations !== null) {
|
|
247
|
-
const count = this.member.
|
|
248
|
-
if (r.registeredAt !== null &&
|
|
249
|
-
|
|
250
|
-
const g = this.organization.groups.find(gg => gg.id === r.groupId);
|
|
251
|
-
return g && g.cycle === r.cycle;
|
|
299
|
+
const count = this.member.patchedMember.registrations.filter(r => {
|
|
300
|
+
if (r.registeredAt !== null && r.deactivatedAt === null && parent.groupIds.includes(r.groupId)) {
|
|
301
|
+
return true;
|
|
252
302
|
}
|
|
253
303
|
return false;
|
|
254
304
|
}).length;
|
|
@@ -263,51 +313,73 @@ class RegisterItem {
|
|
|
263
313
|
return false;
|
|
264
314
|
}
|
|
265
315
|
isInvited() {
|
|
266
|
-
return !!this.member.member.registrations.find(r => r.groupId === this.group.id && r.
|
|
316
|
+
return !!this.member.member.registrations.find(r => r.groupId === this.group.id && r.registeredAt === null && r.canRegister);
|
|
267
317
|
}
|
|
268
318
|
doesMeetRequireGroupIds() {
|
|
269
319
|
if (this.group.settings.requireGroupIds.length > 0) {
|
|
270
320
|
const hasGroup = this.member.member.registrations.find(r => {
|
|
271
|
-
|
|
272
|
-
if (!registrationGroup) {
|
|
273
|
-
return false;
|
|
274
|
-
}
|
|
275
|
-
return this.group.settings.requireGroupIds.includes(r.groupId) && r.registeredAt !== null && r.deactivatedAt === null && !r.waitingList && r.cycle === registrationGroup.cycle;
|
|
321
|
+
return r.registeredAt !== null && r.deactivatedAt === null && this.group.settings.requireGroupIds.includes(r.groupId);
|
|
276
322
|
});
|
|
277
|
-
if (!hasGroup && !this.checkout.cart.items.find(item =>
|
|
323
|
+
if (!hasGroup && !this.checkout.cart.items.find(item => item.member.id === this.member.id && this.group.settings.requireGroupIds.includes(item.group.id))) {
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (this.group.settings.requireDefaultAgeGroupIds.length > 0) {
|
|
328
|
+
const hasGroup = this.member.member.registrations.find(r => {
|
|
329
|
+
return r.registeredAt !== null && r.deactivatedAt === null && r.group.defaultAgeGroupId && this.group.settings.requireDefaultAgeGroupIds.includes(r.group.defaultAgeGroupId);
|
|
330
|
+
});
|
|
331
|
+
if (!hasGroup && !this.checkout.cart.items.find(item => item.member.id === this.member.id && item.group.defaultAgeGroupId && this.group.settings.requireDefaultAgeGroupIds.includes(item.group.defaultAgeGroupId))) {
|
|
278
332
|
return false;
|
|
279
333
|
}
|
|
280
334
|
}
|
|
281
335
|
return true;
|
|
282
336
|
}
|
|
283
|
-
|
|
284
|
-
|
|
337
|
+
doesMeetRequireOrganizationIds() {
|
|
338
|
+
if (this.group.settings.requireOrganizationIds.length > 0) {
|
|
339
|
+
const hasGroup = this.member.member.registrations.find(r => {
|
|
340
|
+
return r.group.type === Group_1.GroupType.Membership && this.group.settings.requireOrganizationIds.includes(r.organizationId) && r.registeredAt !== null && r.deactivatedAt === null;
|
|
341
|
+
});
|
|
342
|
+
if (!hasGroup && !this.checkout.cart.items.find(item => item.member.id === this.member.id && this.group.settings.requireOrganizationIds.includes(item.organization.id))) {
|
|
343
|
+
return false;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return true;
|
|
285
347
|
}
|
|
286
|
-
|
|
287
|
-
if (this.
|
|
288
|
-
|
|
348
|
+
doesMeetRequireOrganizationTags() {
|
|
349
|
+
if (this.group.settings.requireOrganizationTags.length > 0) {
|
|
350
|
+
const hasOrganization = this.member.filterOrganizations({ currentPeriod: true, types: [Group_1.GroupType.Membership] }).find(organization => {
|
|
351
|
+
return organization.meta.matchTags(this.group.settings.requireOrganizationTags);
|
|
352
|
+
});
|
|
353
|
+
if (!hasOrganization && !this.checkout.cart.items.find(item => item.member.id === this.member.id && item.organization.meta.matchTags(this.group.settings.requireOrganizationTags))) {
|
|
354
|
+
return false;
|
|
355
|
+
}
|
|
289
356
|
}
|
|
290
|
-
return
|
|
357
|
+
return true;
|
|
291
358
|
}
|
|
292
|
-
|
|
293
|
-
if (this.
|
|
294
|
-
|
|
359
|
+
doesMeetRequirePlatformMembershipOn() {
|
|
360
|
+
if (this.group.settings.requirePlatformMembershipOn !== null) {
|
|
361
|
+
const requirePlatformMembershipOn = this.group.settings.requirePlatformMembershipOn;
|
|
362
|
+
return !!this.member.patchedMember.platformMemberships.find(m => m.isActive(requirePlatformMembershipOn));
|
|
295
363
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
return 'De inschrijvingen zijn volzet, je kan enkel inschrijven voor de wachtlijst';
|
|
307
|
-
}
|
|
364
|
+
return true;
|
|
365
|
+
}
|
|
366
|
+
isExistingMemberOrFamily() {
|
|
367
|
+
return this.member.isExistingMember(this.group.organizationId) || (this.group.settings.priorityForFamily && !!this.family.members.find(f => f.isExistingMember(this.group.organizationId)));
|
|
368
|
+
}
|
|
369
|
+
get description() {
|
|
370
|
+
const descriptions = [];
|
|
371
|
+
if (this.replaceRegistrations.length > 0) {
|
|
372
|
+
for (const registration of this.replaceRegistrations) {
|
|
373
|
+
descriptions.push("Verplaatsen vanaf " + registration.group.settings.name);
|
|
308
374
|
}
|
|
309
375
|
}
|
|
310
|
-
|
|
376
|
+
if (this.getFilteredPrices().length > 1) {
|
|
377
|
+
descriptions.push(this.groupPrice.name);
|
|
378
|
+
}
|
|
379
|
+
for (const option of this.options) {
|
|
380
|
+
descriptions.push(option.optionMenu.name + ': ' + option.option.name + (option.option.allowAmount ? ` x ${option.amount}` : ""));
|
|
381
|
+
}
|
|
382
|
+
return descriptions.filter(d => !!d).join("\n");
|
|
311
383
|
}
|
|
312
384
|
shouldUseWaitingList() {
|
|
313
385
|
if (this.group.settings.waitingListType === GroupSettings_1.WaitingListType.All) {
|
|
@@ -351,19 +423,60 @@ class RegisterItem {
|
|
|
351
423
|
}
|
|
352
424
|
return null;
|
|
353
425
|
}
|
|
354
|
-
|
|
426
|
+
get validationWarning() {
|
|
427
|
+
if (this.validationError) {
|
|
428
|
+
return null;
|
|
429
|
+
}
|
|
430
|
+
if (!this.member.family.checkout.isAdminFromSameOrganization) {
|
|
431
|
+
// Warnings are only for admins
|
|
432
|
+
return null;
|
|
433
|
+
}
|
|
434
|
+
try {
|
|
435
|
+
this.validate({ warnings: true });
|
|
436
|
+
}
|
|
437
|
+
catch (e) {
|
|
438
|
+
if ((0, simple_errors_1.isSimpleError)(e) || (0, simple_errors_1.isSimpleErrors)(e)) {
|
|
439
|
+
return e.getHuman();
|
|
440
|
+
}
|
|
441
|
+
throw e;
|
|
442
|
+
}
|
|
443
|
+
return null;
|
|
444
|
+
}
|
|
445
|
+
get isValid() {
|
|
446
|
+
return this.validationError === null;
|
|
447
|
+
}
|
|
448
|
+
validate(options) {
|
|
355
449
|
var _a;
|
|
356
450
|
this.cartError = null;
|
|
357
451
|
this.refresh(this.group);
|
|
452
|
+
const checkout = this.member.family.checkout;
|
|
453
|
+
const admin = checkout.isAdminFromSameOrganization && !(options === null || options === void 0 ? void 0 : options.warnings);
|
|
358
454
|
if (this.group.organizationId !== this.organization.id) {
|
|
359
455
|
throw new Error("Group and organization do not match in RegisterItem.validate");
|
|
360
456
|
}
|
|
361
|
-
if (!this.
|
|
362
|
-
|
|
457
|
+
if (checkout.asOrganizationId && !admin && !this.group.settings.allowRegistrationsByOrganization) {
|
|
458
|
+
throw new simple_errors_1.SimpleError({
|
|
459
|
+
code: "as_organization_disabled",
|
|
460
|
+
message: "allowRegistrationsByOrganization disabled",
|
|
461
|
+
human: "Inschrijvingen door organisaties zijn niet toegestaan voor " + this.group.settings.name,
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
for (const registration of this.replaceRegistrations) {
|
|
465
|
+
// todo: check if you are allowed to move
|
|
466
|
+
if (registration.member.id !== this.member.id) {
|
|
363
467
|
throw new simple_errors_1.SimpleError({
|
|
364
|
-
code: "
|
|
365
|
-
message: "
|
|
366
|
-
human:
|
|
468
|
+
code: "invalid_move",
|
|
469
|
+
message: "Invalid member in replaceRegistration",
|
|
470
|
+
human: "Je wilt een inschrijving verplaatsen van een ander lid in ruil voor een ander lid. Dit is niet toegestaan.",
|
|
471
|
+
field: "replaceRegistrations"
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
if (registration.group.organizationId !== this.organization.id) {
|
|
475
|
+
throw new simple_errors_1.SimpleError({
|
|
476
|
+
code: "invalid_move",
|
|
477
|
+
message: "Invalid organization in replaceRegistration",
|
|
478
|
+
human: "Je wilt een inschrijving verplaatsen van een andere organisatie. Dit is niet toegestaan.",
|
|
479
|
+
field: "replaceRegistrations"
|
|
367
480
|
});
|
|
368
481
|
}
|
|
369
482
|
}
|
|
@@ -380,83 +493,95 @@ class RegisterItem {
|
|
|
380
493
|
throw new simple_errors_1.SimpleError({
|
|
381
494
|
code: "maximum_reached",
|
|
382
495
|
message: "Maximum reached",
|
|
383
|
-
human: `Je kan niet meer inschrijven voor ${this.group.settings.name} omdat
|
|
496
|
+
human: `Je kan niet meer inschrijven voor ${this.group.settings.name} omdat ${this.member.patchedMember.name} al ingeschreven is voor een groep die je niet kan combineren.`
|
|
384
497
|
});
|
|
385
498
|
}
|
|
386
499
|
// Check if we have an invite (doesn't matter if registrations are closed)
|
|
387
500
|
if (this.isInvited()) {
|
|
388
501
|
return;
|
|
389
502
|
}
|
|
390
|
-
if (
|
|
391
|
-
|
|
392
|
-
code: "not_yet_open",
|
|
393
|
-
message: "Not yet open",
|
|
394
|
-
human: `De inschrijvingen voor ${this.group.settings.name} zijn nog niet geopend.`
|
|
395
|
-
});
|
|
396
|
-
}
|
|
397
|
-
if (this.group.closed) {
|
|
398
|
-
throw new simple_errors_1.SimpleError({
|
|
399
|
-
code: "closed",
|
|
400
|
-
message: "Closed",
|
|
401
|
-
human: `De inschrijvingen voor ${this.group.settings.name} zijn gesloten.`
|
|
402
|
-
});
|
|
403
|
-
}
|
|
404
|
-
// Check if it fits
|
|
405
|
-
if (this.member.member.details) {
|
|
406
|
-
if (!this.member.member.details.doesMatchGroup(this.group)) {
|
|
407
|
-
const error = this.member.member.details.getMatchingError(this.group);
|
|
503
|
+
if (!admin) {
|
|
504
|
+
if (this.group.notYetOpen) {
|
|
408
505
|
throw new simple_errors_1.SimpleError({
|
|
409
|
-
code: "
|
|
410
|
-
message: "Not
|
|
411
|
-
human:
|
|
506
|
+
code: "not_yet_open",
|
|
507
|
+
message: "Not yet open",
|
|
508
|
+
human: `De inschrijvingen voor ${this.group.settings.name} zijn nog niet geopend.`
|
|
412
509
|
});
|
|
413
510
|
}
|
|
414
|
-
|
|
415
|
-
// Check if registrations are limited
|
|
416
|
-
if (!this.doesMeetRequireGroupIds()) {
|
|
417
|
-
throw new simple_errors_1.SimpleError({
|
|
418
|
-
code: "not_matching",
|
|
419
|
-
message: "Not matching",
|
|
420
|
-
human: "Inschrijving bij " + utility_1.Formatter.joinLast(this.group.settings.requireGroupIds.map(id => { var _a, _b; return (_b = (_a = this.organization.groups.find(g => g.id === id)) === null || _a === void 0 ? void 0 : _a.settings.name) !== null && _b !== void 0 ? _b : "Onbekend"; }), ", ", " of ") + " is verplicht voor je kan inschrijven voor " + this.group.settings.name,
|
|
421
|
-
});
|
|
422
|
-
}
|
|
423
|
-
const existingMember = this.isExistingMemberOrFamily();
|
|
424
|
-
// Pre registrations?
|
|
425
|
-
if (this.group.activePreRegistrationDate) {
|
|
426
|
-
if (!existingMember) {
|
|
511
|
+
if (this.group.closed) {
|
|
427
512
|
throw new simple_errors_1.SimpleError({
|
|
428
|
-
code: "
|
|
429
|
-
message: "
|
|
430
|
-
human:
|
|
513
|
+
code: "closed",
|
|
514
|
+
message: "Closed",
|
|
515
|
+
human: `De inschrijvingen voor ${this.group.settings.name} zijn gesloten.`
|
|
431
516
|
});
|
|
432
517
|
}
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
message: "Waiting list required",
|
|
438
|
-
human: `${this.member.member.firstName} kan momenteel enkel voor de wachtlijst van ${this.group.settings.name} inschrijven.`
|
|
439
|
-
});
|
|
440
|
-
}
|
|
441
|
-
if (!this.waitingList) {
|
|
442
|
-
if (!this.group.waitingList) {
|
|
443
|
-
if (this.hasReachedGroupMaximum()) {
|
|
518
|
+
// Check if it fits
|
|
519
|
+
if (this.member.member.details) {
|
|
520
|
+
if (!this.member.member.details.doesMatchGroup(this.group)) {
|
|
521
|
+
const error = this.member.member.details.getMatchingError(this.group);
|
|
444
522
|
throw new simple_errors_1.SimpleError({
|
|
445
|
-
code: "
|
|
446
|
-
message: "
|
|
447
|
-
human:
|
|
523
|
+
code: "not_matching",
|
|
524
|
+
message: "Not matching: memberDetails",
|
|
525
|
+
human: (_a = error === null || error === void 0 ? void 0 : error.description) !== null && _a !== void 0 ? _a : `${this.member.patchedMember.name} voldoet niet aan de voorwaarden om in te schrijven voor deze groep.`
|
|
448
526
|
});
|
|
449
527
|
}
|
|
450
528
|
}
|
|
451
|
-
|
|
452
|
-
|
|
529
|
+
// Check if registrations are limited
|
|
530
|
+
if (!this.doesMeetRequireGroupIds()) {
|
|
531
|
+
throw new simple_errors_1.SimpleError({
|
|
532
|
+
code: "not_matching",
|
|
533
|
+
message: "Not matching: requireGroupIds",
|
|
534
|
+
human: `${this.member.patchedMember.name} voldoet niet aan de voorwaarden om in te schrijven voor deze groep (verplichte inschrijving bij leeftijdsgroep).`
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
if (!this.doesMeetRequireOrganizationIds()) {
|
|
538
|
+
throw new simple_errors_1.SimpleError({
|
|
539
|
+
code: "not_matching",
|
|
540
|
+
message: "Not matching: requireOrganizationIds",
|
|
541
|
+
human: `${this.member.patchedMember.name} kan pas inschrijven met een geldige actieve inschrijving (verplichte inschrijving bij lokale groep).`
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
if (!this.doesMeetRequireOrganizationTags()) {
|
|
545
|
+
throw new simple_errors_1.SimpleError({
|
|
546
|
+
code: "not_matching",
|
|
547
|
+
message: "Not matching: requireOrganizationIds",
|
|
548
|
+
human: `${this.member.patchedMember.name} kan pas inschrijven met een geldige actieve inschrijving (verplichte inschrijving in regio).`
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
if (!this.doesMeetRequirePlatformMembershipOn()) {
|
|
552
|
+
throw new simple_errors_1.SimpleError({
|
|
553
|
+
code: "not_matching",
|
|
554
|
+
message: "Not matching: requirePlatformMembershipOn",
|
|
555
|
+
human: `${this.member.patchedMember.name} kan pas inschrijven met een geldige aansluiting (en dus verzekering) bij de koepel`
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
const existingMember = this.isExistingMemberOrFamily();
|
|
559
|
+
// Pre registrations?
|
|
560
|
+
if (this.group.activePreRegistrationDate) {
|
|
561
|
+
if (!existingMember) {
|
|
453
562
|
throw new simple_errors_1.SimpleError({
|
|
454
|
-
code: "
|
|
455
|
-
message: "
|
|
456
|
-
human:
|
|
563
|
+
code: "pre_registrations",
|
|
564
|
+
message: "Pre registrations",
|
|
565
|
+
human: "Momenteel zijn de voorinschrijvingen nog bezig voor " + this.group.settings.name + ". Dit is enkel voor bestaande leden" + (this.group.settings.priorityForFamily ? " en hun broers/zussen" : "") + "."
|
|
457
566
|
});
|
|
458
567
|
}
|
|
459
568
|
}
|
|
569
|
+
if (this.shouldUseWaitingList()) {
|
|
570
|
+
throw new simple_errors_1.SimpleError({
|
|
571
|
+
code: "waiting_list_required",
|
|
572
|
+
message: "Waiting list required",
|
|
573
|
+
human: `${this.member.member.firstName} kan momenteel enkel voor de wachtlijst van ${this.group.settings.name} inschrijven.`,
|
|
574
|
+
meta: { recoverable: true }
|
|
575
|
+
});
|
|
576
|
+
}
|
|
577
|
+
if (this.hasReachedGroupMaximum()) {
|
|
578
|
+
throw new simple_errors_1.SimpleError({
|
|
579
|
+
code: "maximum_reached",
|
|
580
|
+
message: "Maximum reached",
|
|
581
|
+
human: this.group.waitingList ? `De inschrijvingen voor ${this.group.settings.name} zijn volzet. Je kan wel nog inschrijven voor de wachtlijst.` : `De inschrijvingen voor ${this.group.settings.name} zijn volzet. `,
|
|
582
|
+
meta: { recoverable: true }
|
|
583
|
+
});
|
|
584
|
+
}
|
|
460
585
|
}
|
|
461
586
|
}
|
|
462
587
|
static fromId(idRegisterItem, context) {
|
|
@@ -487,6 +612,46 @@ class RegisterItem {
|
|
|
487
612
|
}
|
|
488
613
|
return this.organization.meta.registrationPaymentConfiguration;
|
|
489
614
|
}
|
|
615
|
+
/**
|
|
616
|
+
* Returns the stock that will be taken (or freed if negative) by all the register items before this item
|
|
617
|
+
* and with the removed registrations freed up, so this can be negative
|
|
618
|
+
*/
|
|
619
|
+
getCartPendingStockReservations() {
|
|
620
|
+
const deleteRegistrations = this.checkout.cart.deleteRegistrations.filter(r => r.groupId === this.group.id);
|
|
621
|
+
const cartIndex = this.checkout.cart.items.findIndex(i => i.id === this.id);
|
|
622
|
+
const itemsBefore = this.checkout.cart.items.slice(0, cartIndex === -1 ? undefined : cartIndex);
|
|
623
|
+
return StockReservation_1.StockReservation.removed(itemsBefore.flatMap(i => i.getPendingStockReservations()), // these will be removed
|
|
624
|
+
deleteRegistrations.flatMap(r => r.stockReservations) // these will be freed up
|
|
625
|
+
);
|
|
626
|
+
}
|
|
627
|
+
/**
|
|
628
|
+
* Stock that will be taken by this item
|
|
629
|
+
*/
|
|
630
|
+
getPendingStockReservations() {
|
|
631
|
+
return [
|
|
632
|
+
// Global level stock reservations (stored in each group)
|
|
633
|
+
StockReservation_1.StockReservation.create({
|
|
634
|
+
objectId: this.group.id,
|
|
635
|
+
objectType: 'Group',
|
|
636
|
+
amount: 1,
|
|
637
|
+
children: [
|
|
638
|
+
// Group level stock reservatiosn (stored in the group)
|
|
639
|
+
StockReservation_1.StockReservation.create({
|
|
640
|
+
objectId: this.groupPrice.id,
|
|
641
|
+
objectType: 'GroupPrice',
|
|
642
|
+
amount: 1
|
|
643
|
+
}),
|
|
644
|
+
...this.options.map(o => {
|
|
645
|
+
return StockReservation_1.StockReservation.create({
|
|
646
|
+
objectId: o.option.id,
|
|
647
|
+
objectType: 'GroupOption',
|
|
648
|
+
amount: o.amount
|
|
649
|
+
});
|
|
650
|
+
})
|
|
651
|
+
]
|
|
652
|
+
})
|
|
653
|
+
];
|
|
654
|
+
}
|
|
490
655
|
}
|
|
491
656
|
exports.RegisterItem = RegisterItem;
|
|
492
657
|
//# sourceMappingURL=RegisterItem.js.map
|