diff --git a/ecommerce/api.py b/ecommerce/api.py index ce20da78e8..081dd93793 100644 --- a/ecommerce/api.py +++ b/ecommerce/api.py @@ -156,6 +156,21 @@ def calculate_tax( return (0, "", item_price) +def display_taxes(user): + """ + Calculates the taxes display for a specific user. + + Args: + user(users.User): User object + """ + return ( + settings.FEATURES.get("ENABLE_TAXES_DISPLAY", False) + and user.is_authenticated + and user.legal_address.country + in TaxRate.objects.filter(active=True).values_list("country_code", flat=True) + ) + + def generate_cybersource_sa_signature(payload): """ Generate an HMAC SHA256 signature for the CyberSource Secure Acceptance payload diff --git a/ecommerce/mail_api.py b/ecommerce/mail_api.py index ffe4ecbc63..8a2bf951a9 100644 --- a/ecommerce/mail_api.py +++ b/ecommerce/mail_api.py @@ -21,6 +21,7 @@ EMAIL_WELCOME_COURSE_RUN_ENROLLMENT, ) from mitxpro.utils import format_price +from users.models import User log = logging.getLogger() ENROLL_ERROR_EMAIL_SUBJECT = "MIT xPRO enrollment error" @@ -297,6 +298,7 @@ def send_ecommerce_order_receipt(order, cyber_source_provided_email=None): cyber_source_provided_email: Include the email address if user provide though CyberSource payment process. order: An order. """ + from ecommerce.api import display_taxes from ecommerce.serializers import OrderReceiptSerializer data = OrderReceiptSerializer(instance=order).data @@ -306,6 +308,7 @@ def send_ecommerce_order_receipt(order, cyber_source_provided_email=None): order = data.get("order") receipt = data.get("receipt") country = pycountry.countries.get(alpha_2=purchaser.get("country")) + user = User.objects.get(email=purchaser.get("email")) recipients = [purchaser.get("email")] if cyber_source_provided_email and cyber_source_provided_email not in recipients: recipients.append(cyber_source_provided_email) @@ -356,9 +359,7 @@ def send_ecommerce_order_receipt(order, cyber_source_provided_email=None): "company": purchaser.get("company"), "vat_id": purchaser.get("vat_id"), }, - "enable_taxes_display": settings.FEATURES.get( - "ENABLE_TAXES_DISPLAY", False - ), + "enable_taxes_display": display_taxes(user), }, ), ) diff --git a/mail/templates/product_order_receipt/body.html b/mail/templates/product_order_receipt/body.html index bba7b47879..1133d48c7e 100755 --- a/mail/templates/product_order_receipt/body.html +++ b/mail/templates/product_order_receipt/body.html @@ -22,7 +22,7 @@ Cambridge, MA 02139 USA
{% if enable_taxes_display %} - GSTIN: Pending + GSTIN: 9923USA29055OSB
{% endif %} Support: diff --git a/mitxpro/utils.py b/mitxpro/utils.py index c931f6e3d8..f8f5cfc42c 100644 --- a/mitxpro/utils.py +++ b/mitxpro/utils.py @@ -581,6 +581,8 @@ def get_js_settings(request: HttpRequest): Returns: dict: the settings object """ + from ecommerce.api import display_taxes + return { "gtmTrackingID": settings.GTM_TRACKING_ID, "gaTrackingID": settings.GA_TRACKING_ID, @@ -600,7 +602,7 @@ def get_js_settings(request: HttpRequest): "course_dropdown": settings.FEATURES.get("COURSE_DROPDOWN", False), "webinars": settings.FEATURES.get("WEBINARS", False), "enable_blog": settings.FEATURES.get("ENABLE_BLOG", False), - "enable_taxes_display": settings.FEATURES.get("ENABLE_TAXES_DISPLAY", False), + "enable_taxes_display": display_taxes(request.user), "enable_enterprise": settings.FEATURES.get("ENABLE_ENTERPRISE", False), } diff --git a/static/js/containers/pages/ReceiptPage.js b/static/js/containers/pages/ReceiptPage.js index c212412791..5c9fb44971 100644 --- a/static/js/containers/pages/ReceiptPage.js +++ b/static/js/containers/pages/ReceiptPage.js @@ -107,7 +107,7 @@ export class ReceiptPage extends React.Component {
Cambridge, MA 02139 USA {SETTINGS.enable_taxes_display ? ( -
GSTIN: Pending
+
GSTIN: 9923USA29055OSB
) : null} Support:{" "}