28 lines
1.2 KiB
Python
28 lines
1.2 KiB
Python
|
|
from decimal import Decimal
|
|
from django.conf import settings
|
|
|
|
def calculate_vat(value):
|
|
"""Helper to calculate VAT dynamically for a given value."""
|
|
vat_rate = getattr(settings, 'VAT_RATE', Decimal('0.15')) # Default VAT rate
|
|
return (value * vat_rate).quantize(Decimal('0.01'))
|
|
def get_financial_value(instance,attribute,vat=False):
|
|
if vat:
|
|
return calculate_vat(getattr(instance, attribute, Decimal('0.00')) if instance else Decimal('0.00'))
|
|
return getattr(instance, attribute, Decimal('0.00')) if instance else Decimal('0.00')
|
|
|
|
def get_total_financials(instance,vat=False):
|
|
price_after_discount = get_financial_value(instance,"selling_price",vat) - get_financial_value(instance,"discount_amount",vat)
|
|
subtotal = (
|
|
price_after_discount +
|
|
get_financial_value(instance,"registration_fee") +
|
|
get_financial_value(instance,"administration_fee",vat) +
|
|
get_financial_value(instance,"transportation_fee",vat) +
|
|
get_financial_value(instance,"custom_card_fee",vat))
|
|
|
|
return subtotal
|
|
|
|
def get_total(instance):
|
|
total = get_total_financials(instance)
|
|
total_vat = get_total_financials(instance,vat=True)
|
|
return total + total_vat |