templatetags: Update donation_income for CopyleftConf 2020.
This commit is contained in:
parent
9af0cce802
commit
9d5f83ec39
1 changed files with 11 additions and 23 deletions
|
@ -1,4 +1,4 @@
|
||||||
from registrasion.models import commerce
|
from registrasion.models import commerce, inventory
|
||||||
from registrasion.controllers.category import CategoryController
|
from registrasion.controllers.category import CategoryController
|
||||||
from registrasion.controllers.item import ItemController
|
from registrasion.controllers.item import ItemController
|
||||||
from registrasion.templatetags import registrasion_tags
|
from registrasion.templatetags import registrasion_tags
|
||||||
|
@ -14,6 +14,9 @@ register = template.Library()
|
||||||
CENTS_QUANT = Decimal('.01')
|
CENTS_QUANT = Decimal('.01')
|
||||||
VAT_RATE = str(settings.INVOICE_VAT_RATE * 100).rstrip('.0') + '%'
|
VAT_RATE = str(settings.INVOICE_VAT_RATE * 100).rstrip('.0') + '%'
|
||||||
|
|
||||||
|
def nonvat_price(product):
|
||||||
|
return product.price * (1 - settings.INVOICE_VAT_RATE)
|
||||||
|
|
||||||
@register.simple_tag
|
@register.simple_tag
|
||||||
def vat_amount(invoice):
|
def vat_amount(invoice):
|
||||||
return (invoice.value * settings.INVOICE_VAT_RATE).quantize(CENTS_QUANT)
|
return (invoice.value * settings.INVOICE_VAT_RATE).quantize(CENTS_QUANT)
|
||||||
|
@ -31,28 +34,13 @@ def donation_income(context, invoice):
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
# 15% (FSA) goes to Conservancy; 85% is real goods
|
tickets = inventory.Product.objects.filter(category__id=settings.TICKET_PRODUCT_CATEGORY)
|
||||||
|
cheapest_ticket = tickets.order_by('price').first()
|
||||||
fsa_rate = Decimal("0.85")
|
ticket_rbi = nonvat_price(cheapest_ticket)
|
||||||
rbi_full_ticket = Decimal("68.00")
|
return sum(
|
||||||
rbi_early_bird_discount = Decimal("-21.35")
|
(nonvat_price(ticket) - ticket_rbi
|
||||||
rbi = []
|
for ticket in invoice.lineitem_set.filter(product__in=tickets)),
|
||||||
|
Decimal(0)).quantize(CENTS_QUANT)
|
||||||
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 = max(Decimal('0'), (invoice.value - sum(rbi)))
|
|
||||||
return donation.quantize(CENTS_QUANT)
|
|
||||||
|
|
||||||
|
|
||||||
# TODO: include van/de/van der/de la/etc etc etc
|
# TODO: include van/de/van der/de la/etc etc etc
|
||||||
|
|
Loading…
Reference in a new issue