Skip to content

Commit

Permalink
Merge pull request #749 from xzzy/master
Browse files Browse the repository at this point in the history
Ledger Refund Email Fix  & Mooring Bug Fixes
  • Loading branch information
xzzy committed Jan 2, 2020
2 parents ff84fe3 + 9f22131 commit c3e3d6f
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 15 deletions.
3 changes: 2 additions & 1 deletion ledger/accounts/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,8 @@ def save(self, *args, **kwargs):

def get_full_name(self):
full_name = '{} {}'.format(self.first_name, self.last_name)
return full_name.strip()
#.encode('utf-8').strip()
return full_name

def get_full_name_dob(self):
full_name_dob = '{} {} ({})'.format(self.first_name, self.last_name, self.dob.strftime('%d/%m/%Y'))
Expand Down
8 changes: 6 additions & 2 deletions ledger/payments/bpoint/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from oscar.apps.order.models import Order
from ledger.accounts.models import EmailUser
from ledger.payments.emails import send_refund_email
from confy import env

class BpointTransaction(models.Model):
ACTION_TYPES = (
Expand Down Expand Up @@ -158,6 +159,8 @@ def replay_transaction(self):
def refund(self,info,user,matched=True):
from ledger.payments.facade import bpoint_facade
from ledger.payments.models import TrackRefund, Invoice
LEDGER_REFUND_EMAIL = env('LEDGER_REFUND_EMAIL', False)


with transaction.atomic():
amount = info['amount']
Expand Down Expand Up @@ -190,8 +193,9 @@ def refund(self,info,user,matched=True):
except BpointToken.DoesNotExist:
UsedBpointToken.objects.create(DVToken=txn.dvtoken)
TrackRefund.objects.create(user=user,type=2,refund_id=txn.id,details=details)
# Disabled as requested by Walter
#send_refund_email(Invoice.objects.get(reference=self.crn1),'card',txn.amount,card_ending=self.last_digits)
if LEDGER_REFUND_EMAIL is True:
# Disabled as requested by Walter and then enabled again for parkstay
send_refund_email(Invoice.objects.get(reference=self.crn1),'card',txn.amount,card_ending=self.last_digits)
else:
raise ValidationError('The refund amount is greater than the amount refundable on this card.')
else:
Expand Down
29 changes: 18 additions & 11 deletions mooring/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -319,28 +319,35 @@ def telephone(self):
def _is_open(self,period):
'''Check if the campground is open on a specified datetime
'''
is_open = False
open_ranges, closed_ranges = None, None
# Get all booking ranges
try:
open_ranges = self.booking_ranges.filter(Q(status=0),Q(range_start__lte=period), Q(range_end__gte=period) | Q(range_end__isnull=True) ).latest('updated_on')
is_open = True
except MooringAreaBookingRange.DoesNotExist:
pass
try:
closed_ranges = self.booking_ranges.filter(Q(range_start__lte=period),~Q(status=0),Q(range_end__gte=period) | Q(range_end__isnull=True) ).latest('updated_on')
closed_ranges = self.booking_ranges.filter(Q(range_start__lte=period),Q(status=1),Q(range_end__gte=period)).latest('updated_on')
#is_open = False
except MooringAreaBookingRange.DoesNotExist:
return True if open_ranges else False

if not open_ranges:
return False
if open_ranges.updated_on > closed_ranges.updated_on:
return True
return False
pass
#return True if open_ranges else False
if open_ranges:
is_open = True
if closed_ranges:
is_open = False
#if not open_ranges:
# return False
#if open_ranges.updated_on > closed_ranges.updated_on:
# return True
return is_open

def _get_current_closure(self):
closure_period = None
period = timezone.now()
if not self.active:
closure = self.booking_ranges.filter(Q(range_start__lte=period),~Q(status=0),Q(range_end__isnull=True) |Q(range_end__gte=period)).order_by('updated_on')
closure = self.booking_ranges.filter(Q(range_start__lte=period),Q(status=1),Q(range_end__gte=period)).order_by('updated_on')
if closure:
closure_period = closure[0]
return closure_period
Expand Down Expand Up @@ -806,7 +813,7 @@ def _is_open(self,period):
except MooringsiteBookingRange.DoesNotExist:
pass
try:
closed_ranges = self.booking_ranges.filter(Q(range_start__lte=period),~Q(status=0),Q(range_end__gte=period) | Q(range_end__isnull=True) ).latest('updated_on')
closed_ranges = self.booking_ranges.filter(Q(range_start__lte=period),~Q(status=0),Q(range_end__gte=period) ).latest('updated_on')
except MooringsiteBookingRange.DoesNotExist:
return True if open_ranges else False

Expand All @@ -821,7 +828,7 @@ def __get_current_closure(self):
closure_period = None
period = datetime.now().date()
if not self.active:
closure = self.booking_ranges.get(Q(range_start__lte=period),~Q(status=0),Q(range_end__isnull=True) |Q(range_end__gte=period))
closure = self.booking_ranges.get(Q(range_start__lte=period),Q(status=1),Q(range_end__gte=period))
closure_period = closure
return closure_period
else:
Expand Down
2 changes: 2 additions & 0 deletions mooring/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,8 @@ def check_mooring_available_by_time(campsite_id, start_date_time, end_date_time)
return False

def check_mooring_availablity(campsites_qs, start_date, end_date):
if start_date != end_date:
end_date =end_date-timedelta(days=1)

avail_results = get_campsite_availability(campsites_qs, start_date, end_date,None, None)

Expand Down
7 changes: 6 additions & 1 deletion mooring/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -539,12 +539,17 @@ def post(self, request, *args, **kwargs):
invoice = Invoice.objects.get(reference=bi.invoice_reference)
RefundFailed.objects.create(admission_booking=booking, invoice_reference=invoice.reference, refund_amount=b_total,status=0,basket_json=booking_cancellation_fees)

new_order = Order.objects.get(basket=basket)
new_invoice = Invoice.objects.get(order_number=new_order.number)
new_invoice.settlement_date = None
new_invoice.save()

if refund:
bpoint_refund = BpointTransaction.objects.get(txn_number=refund.txn_number)
bpoint_refund.crn1 = new_invoice.reference
bpoint_refund.save()
update_payments(invoice.reference)
update_payments(new_invoice.reference)
update_payments(new_invoice.reference)

if failed_refund is True:
# Refund Failed Assign Refund amount to allocation pool.
Expand Down

0 comments on commit c3e3d6f

Please sign in to comment.