Adds donation calculator.
This commit is contained in:
parent
868ef33e74
commit
3053a9bfb2
2 changed files with 44 additions and 0 deletions
0
pinaxcon/templatetags/__init__.py
Normal file
0
pinaxcon/templatetags/__init__.py
Normal file
44
pinaxcon/templatetags/nbpy_tags.py
Normal file
44
pinaxcon/templatetags/nbpy_tags.py
Normal file
|
@ -0,0 +1,44 @@
|
|||
from registrasion.models import commerce
|
||||
from registrasion.controllers.category import CategoryController
|
||||
from registrasion.controllers.item import ItemController
|
||||
|
||||
from decimal import Decimal
|
||||
from django import template
|
||||
from django.conf import settings
|
||||
from django.db.models import Sum
|
||||
from urllib import urlencode # TODO: s/urllib/six.moves.urllib/
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.simple_tag(takes_context=True)
|
||||
def donation_income(context, invoice):
|
||||
''' Calculates the donation income for a given invoice.
|
||||
|
||||
Returns:
|
||||
the donation income.
|
||||
|
||||
'''
|
||||
|
||||
# 15% (FSA) goes to Conservancy; 85% is real goods
|
||||
|
||||
fsa_rate = Decimal("0.85")
|
||||
rbi_full_ticket = Decimal("68.00")
|
||||
rbi_early_bird_discount = Decimal("-21.35")
|
||||
rbi = []
|
||||
|
||||
for line in invoice.lineitem_set.all():
|
||||
if line.product.category.name == "Ticket":
|
||||
if line.product.name.startswith("Unaffiliated Individual"):
|
||||
# Includes full price & discounts
|
||||
rbi.append(line.total_price * fsa_rate)
|
||||
else:
|
||||
if line.total_price > 0:
|
||||
rbi.append(rbi_full_ticket)
|
||||
elif line.total_price < 0:
|
||||
rbi.append(rbi_early_bird_discount)
|
||||
elif line.product.category.name == "T-Shirt":
|
||||
rbi.append(line.total_price * fsa_rate)
|
||||
|
||||
donation = (invoice.value - sum(rbi))
|
||||
return donation.quantize(Decimal('.01'))
|
Loading…
Reference in a new issue