From 0cb5f71843cd333ce8512bcb980cd490bf992bfb Mon Sep 17 00:00:00 2001
From: frekk <frekk@ucc.asn.au>
Date: Tue, 26 Feb 2019 20:50:36 +0800
Subject: [PATCH] make approval form respect already-paid memberships

---
 src/memberdb/approve.py | 11 ++++++++---
 src/memberdb/models.py  |  1 +
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/memberdb/approve.py b/src/memberdb/approve.py
index 59fe2bc..50ca2ad 100644
--- a/src/memberdb/approve.py
+++ b/src/memberdb/approve.py
@@ -32,6 +32,7 @@ class MembershipApprovalForm(MyModelForm):
 
 		# override the model membership_type field so we display all the options with prices
 		self.fields['membership_type'].choices = get_membership_choices()
+		self.fields['payment_confirm'].initial = (self.instance.date_paid is not None)
 
 	def clean(self):
 		"""
@@ -50,9 +51,13 @@ class MembershipApprovalForm(MyModelForm):
 		data['date_approved'] = now
 
 		if (data['payment_confirm'] == True):
-			if (data['payment_method'] == ''):
-				self.add_error('payment_method', 'Please select a payment method')
-			data['date_paid'] = now
+			if data['payment_method'] == self.instance.payment_method and data['payment_confirm'] == (self.instance.date_paid is not None):
+				# check if the payment was already made, preserve the date_paid
+				data['date_paid'] = self.instance.date_paid
+			else:
+				if (data['payment_method'] == ''):
+					self.add_error('payment_method', 'Please select a payment method')
+				data['date_paid'] = now
 		else:
 			data['date_paid'] = None
 
diff --git a/src/memberdb/models.py b/src/memberdb/models.py
index f4bcea3..b8cb469 100644
--- a/src/memberdb/models.py
+++ b/src/memberdb/models.py
@@ -109,6 +109,7 @@ def make_pending_membership(member):
 
 	# otherwise update the existing membership and mark as pending
 	latest.approved = False
+	latest.date_approved = None
 	latest.date_submitted = timezone.now()
 
 	return latest
-- 
GitLab