from django import template
from decimal import Decimal, InvalidOperation, ROUND_HALF_UP

register = template.Library()

@register.filter
def currency(value):
    try:
        amount = Decimal(str(value))
        amount = amount.quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
        return f"₹ {amount:.2f}"
    except (InvalidOperation, TypeError, ValueError):
        return "₹ 0.00"


@register.filter
def currency_symbol(value="INR"):
    symbols = {
        "INR": "₹",
        "USD": "$",
        "EUR": "€",
        "GBP": "£",
    }
    return symbols.get(value, "₹")


@register.simple_tag
def calculate_tax(amount, rate):
    try:
        val = Decimal(str(amount))
        r = Decimal(str(rate))
        tax = val * (r / Decimal("100"))
        return tax
    except (InvalidOperation, TypeError, ValueError):
        return Decimal("0")
