From 996ecbc36dbfbe9fc3d7277ce4179a2739734c5a Mon Sep 17 00:00:00 2001 From: Thomas Steen Rasmussen Date: Sat, 18 Jun 2016 23:42:58 +0200 Subject: [PATCH] more work on creditnotes, add refunded field to order, delete tickets when order is marked as refunded --- shop/admin.py | 8 +++++++- shop/models.py | 12 ++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/shop/admin.py b/shop/admin.py index 72064c44..75beb05c 100644 --- a/shop/admin.py +++ b/shop/admin.py @@ -54,6 +54,7 @@ class OrderAdmin(admin.ModelAdmin): 'open', 'paid', 'cancelled', + 'refunded', ] list_filter = [ @@ -62,6 +63,7 @@ class OrderAdmin(admin.ModelAdmin): 'open', 'paid', 'cancelled', + 'refunded', 'user', ] @@ -69,11 +71,15 @@ class OrderAdmin(admin.ModelAdmin): inlines = [ProductInline, TicketInline] - actions = ['mark_order_as_paid'] + actions = ['mark_order_as_paid', 'mark_order_as_refunded'] def mark_order_as_paid(self, request, queryset): for order in queryset.filter(paid=False): order.mark_as_paid() mark_order_as_paid.description = 'Mark order(s) as paid' + def mark_order_as_refunded(self, request, queryset): + for order in queryset.filter(refunded=False): + order.mark_as_refunded() + mark_order_as_refunded.description = 'Mark order(s) as refunded' diff --git a/shop/models.py b/shop/models.py index e0b36d42..0a8b2b5c 100644 --- a/shop/models.py +++ b/shop/models.py @@ -74,6 +74,12 @@ class Order(CreatedUpdatedModel): cancelled = models.BooleanField(default=False) + refunded = models.BooleanField( + verbose_name=_('Refunded?'), + help_text=_('Whether this order has been refunded.'), + default=False, + ) + objects = OrderQuerySet.as_manager() def __str__(self): @@ -137,6 +143,12 @@ class Order(CreatedUpdatedModel): ticket.save() self.save() + def mark_as_refunded(self): + self.refunded=True + ### delete any tickets related to this order + self.tickets.all().delete() + self.save() + def is_not_handed_out(self): if self.orderproductrelation_set.filter(handed_out=True).count() == 0: return True