diff --git a/aleksis/apps/paweljong/migrations/0023_eventregistration_cost.py b/aleksis/apps/paweljong/migrations/0023_eventregistration_cost.py new file mode 100644 index 0000000000000000000000000000000000000000..8b160450e7915c67f64d0b280ca0c7c5da25e6a5 --- /dev/null +++ b/aleksis/apps/paweljong/migrations/0023_eventregistration_cost.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.19 on 2023-06-04 14:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('paweljong', '0022_send_to_retracted_or_not_checked_in'), + ] + + operations = [ + migrations.AddField( + model_name='eventregistration', + name='cost', + field=models.IntegerField(blank=True, null=True, verbose_name='Cost in €'), + ), + ] diff --git a/aleksis/apps/paweljong/migrations/0024_add_cost_to_registration.py b/aleksis/apps/paweljong/migrations/0024_add_cost_to_registration.py new file mode 100644 index 0000000000000000000000000000000000000000..00ac970fcdde0c5a8557091d196beebb4d247829 --- /dev/null +++ b/aleksis/apps/paweljong/migrations/0024_add_cost_to_registration.py @@ -0,0 +1,13 @@ +# Generated by Django 3.2.19 on 2023-06-04 14:54 + +from django.db import migrations, models + +class Migration(migrations.Migration): + + dependencies = [ + ('paweljong', '0023_eventregistration_cost'), + ] + + operations = [ + migrations.RunSQL("UPDATE paweljong_eventregistration SET cost = (SELECT paweljong_event.cost FROM paweljong_event WHERE paweljong_event.id = paweljong_eventregistration.event_id);") + ] diff --git a/aleksis/apps/paweljong/models.py b/aleksis/apps/paweljong/models.py index 8121c655a7ce6ba7a684e40ec0d5742a0faba10e..292dbc4f3a262b75c8831defba4feee3029c69c2 100644 --- a/aleksis/apps/paweljong/models.py +++ b/aleksis/apps/paweljong/models.py @@ -309,6 +309,9 @@ class EventRegistration(ExtensibleModel): checked_in = models.BooleanField(verbose_name=_("Checked in"), default=False) checked_in_date = models.DateTimeField(verbose_name=_("Checked in at"), null=True, blank=True) + cost = models.IntegerField(verbose_name=_("Cost in €"), null=True, blank=True) + + def mark_checked_in(self): if not self.checked_in: self.checked_in = True @@ -372,7 +375,7 @@ class EventRegistration(ExtensibleModel): yield PurchasedItem( name=self.event.display_name, quantity=1, - price=Decimal(self.event.cost / 1.07), + price=Decimal(self.cost / 1.07), currency="EUR", sku="EVENT", tax_rate=7, @@ -394,7 +397,7 @@ class EventRegistration(ExtensibleModel): yield PurchasedItem( name=_("Voucher / Granted discount"), quantity=1, - price=Decimal(-1 * self.voucher.discount * (self.event.cost / 1.07) / 100), + price=Decimal(-1 * self.voucher.discount * (self.cost / 1.07) / 100), currency="EUR", sku="DISCO", tax_rate=7, @@ -413,6 +416,8 @@ class EventRegistration(ExtensibleModel): def save(self, *args, **kwargs): self.event.sync_group_members() + if self.cost is None: + self.cost = self.event.cost super().save(*args, **kwargs) def delete(self, *args, **kwargs): diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py index 265a06b1d1979e3535a4751d501dc2b7ac9fcbbd..f9b4aecaf4ccdee144d698d9aeb1eb499e7383a5 100644 --- a/aleksis/apps/paweljong/views.py +++ b/aleksis/apps/paweljong/views.py @@ -169,7 +169,7 @@ class EventRegistrationEditView(PermissionRequiredMixin, AdvancedEditView): form_class = EditEventRegistrationForm permission_required = "paweljong.change_registration_rule" template_name = "paweljong/event_registration/edit.html" - success_url = reverse_lazy("registrations") + success_url = reverse_lazy("index") success_message = _("The event registration has been saved.") @@ -235,7 +235,7 @@ class EventRegistrationDeleteView(PermissionRequiredMixin, AdvancedDeleteView): model = EventRegistration permission_required = "paweljong.delete_eventregistration_rule" template_name = "core/pages/delete.html" - success_url = reverse_lazy("registrations") + success_url = reverse_lazy("index") success_message = _("The registration has been deleted.") @@ -866,7 +866,7 @@ class SendMailFromRegistration(PermissionRequiredMixin, FormView): template_name = "paweljong/event_registration/notification.html" permission_required = "paweljong.send_notification_mail_rule" form_class = RegistrationNotificationForm - success_url = reverse_lazy("registrations") + success_url = reverse_lazy("index") def form_valid(self, form):