stripe: Use 'get_price_per_license' in 'get_initial_upgrade_context'.

This commit updates the 'get_initial_upgrade_context' method
to use 'get_price_per_license' for determining 'annual_price'
and 'monthly_price' based on tier and discount instead of hardcoding.

Also, removed the 'percent_off' page_params as
'get_price_per_license' already performs the price calculation
taking discount into consideration.
This commit is contained in:
Prakhar Pratyush 2023-11-22 12:06:24 +05:30 committed by Tim Abbott
parent cda7ed7101
commit 476b44ae67
4 changed files with 8 additions and 7 deletions

View File

@ -450,6 +450,7 @@ class UpgradeRequest:
class InitialUpgradeRequest: class InitialUpgradeRequest:
onboarding: bool onboarding: bool
manual_license_management: bool manual_license_management: bool
tier: int
class AuditLogEventType(Enum): class AuditLogEventType(Enum):
@ -1239,6 +1240,7 @@ class BillingSession(ABC):
seat_count = self.current_count_for_billed_licenses() seat_count = self.current_count_for_billed_licenses()
signed_seat_count, salt = sign_string(str(seat_count)) signed_seat_count, salt = sign_string(str(seat_count))
tier = initial_upgrade_request.tier
context: Dict[str, Any] = { context: Dict[str, Any] = {
"seat_count": seat_count, "seat_count": seat_count,
"signed_seat_count": signed_seat_count, "signed_seat_count": signed_seat_count,
@ -1251,9 +1253,8 @@ class BillingSession(ABC):
"onboarding": onboarding, "onboarding": onboarding,
"page_params": { "page_params": {
"seat_count": seat_count, "seat_count": seat_count,
"annual_price": 8000, "annual_price": get_price_per_license(tier, CustomerPlan.ANNUAL, percent_off),
"monthly_price": 800, "monthly_price": get_price_per_license(tier, CustomerPlan.MONTHLY, percent_off),
"percent_off": float(percent_off),
}, },
"manual_license_management": initial_upgrade_request.manual_license_management, "manual_license_management": initial_upgrade_request.manual_license_management,
} }

View File

@ -17,7 +17,7 @@ from corporate.lib.stripe import (
UpgradeRequest, UpgradeRequest,
) )
from corporate.lib.support import get_support_url from corporate.lib.support import get_support_url
from corporate.models import ZulipSponsorshipRequest from corporate.models import CustomerPlan, ZulipSponsorshipRequest
from zerver.actions.users import do_change_is_billing_admin from zerver.actions.users import do_change_is_billing_admin
from zerver.decorator import require_organization_member, zulip_login_required from zerver.decorator import require_organization_member, zulip_login_required
from zerver.lib.request import REQ, has_request_variables from zerver.lib.request import REQ, has_request_variables
@ -94,6 +94,7 @@ def initial_upgrade(
initial_upgrade_request = InitialUpgradeRequest( initial_upgrade_request = InitialUpgradeRequest(
onboarding=onboarding, onboarding=onboarding,
manual_license_management=manual_license_management, manual_license_management=manual_license_management,
tier=CustomerPlan.STANDARD,
) )
billing_session = RealmBillingSession(user) billing_session = RealmBillingSession(user)
redirect_url, context = billing_session.get_initial_upgrade_context(initial_upgrade_request) redirect_url, context = billing_session.get_initial_upgrade_context(initial_upgrade_request)

View File

@ -6,7 +6,6 @@ import $ from "jquery";
export const page_params: { export const page_params: {
annual_price: number; annual_price: number;
monthly_price: number; monthly_price: number;
percent_off: number;
seat_count: number; seat_count: number;
} = $("#page-params").data("params"); } = $("#page-params").data("params");

View File

@ -8,8 +8,8 @@ import type {Prices} from "./helpers";
import {page_params} from "./page_params"; import {page_params} from "./page_params";
const prices: Prices = { const prices: Prices = {
annual: page_params.annual_price * (1 - page_params.percent_off / 100), annual: page_params.annual_price,
monthly: page_params.monthly_price * (1 - page_params.percent_off / 100), monthly: page_params.monthly_price,
}; };
const ls = localstorage(); const ls = localstorage();