diff --git a/src/CONST.ts b/src/CONST.ts index e317c19d96d2d..aec96fc28a522 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -2974,6 +2974,50 @@ const CONST = { PAYPERUSE: 'monthly2018', }, }, + get SUBSCRIPTION_PRICES() { + return { + [this.PAYMENT_CARD_CURRENCY.USD]: { + [this.POLICY.TYPE.CORPORATE]: { + [this.SUBSCRIPTION.TYPE.ANNUAL]: 900, + [this.SUBSCRIPTION.TYPE.PAYPERUSE]: 1800, + }, + [this.POLICY.TYPE.TEAM]: { + [this.SUBSCRIPTION.TYPE.ANNUAL]: 500, + [this.SUBSCRIPTION.TYPE.PAYPERUSE]: 1000, + }, + }, + [this.PAYMENT_CARD_CURRENCY.AUD]: { + [this.POLICY.TYPE.CORPORATE]: { + [this.SUBSCRIPTION.TYPE.ANNUAL]: 1500, + [this.SUBSCRIPTION.TYPE.PAYPERUSE]: 3000, + }, + [this.POLICY.TYPE.TEAM]: { + [this.SUBSCRIPTION.TYPE.ANNUAL]: 700, + [this.SUBSCRIPTION.TYPE.PAYPERUSE]: 1400, + }, + }, + [this.PAYMENT_CARD_CURRENCY.GBP]: { + [this.POLICY.TYPE.CORPORATE]: { + [this.SUBSCRIPTION.TYPE.ANNUAL]: 700, + [this.SUBSCRIPTION.TYPE.PAYPERUSE]: 1400, + }, + [this.POLICY.TYPE.TEAM]: { + [this.SUBSCRIPTION.TYPE.ANNUAL]: 400, + [this.SUBSCRIPTION.TYPE.PAYPERUSE]: 800, + }, + }, + [this.PAYMENT_CARD_CURRENCY.NZD]: { + [this.POLICY.TYPE.CORPORATE]: { + [this.SUBSCRIPTION.TYPE.ANNUAL]: 1600, + [this.SUBSCRIPTION.TYPE.PAYPERUSE]: 3200, + }, + [this.POLICY.TYPE.TEAM]: { + [this.SUBSCRIPTION.TYPE.ANNUAL]: 800, + [this.SUBSCRIPTION.TYPE.PAYPERUSE]: 1600, + }, + }, + }; + }, REGEX: { SPECIAL_CHARS_WITHOUT_NEWLINE: /((?!\n)[()-\s\t])/g, DIGITS_AND_PLUS: /^\+?[0-9]*$/, diff --git a/src/hooks/useSubscriptionPrice.ts b/src/hooks/useSubscriptionPrice.ts index 0b71fe62c7c8d..3185ee1aaa470 100644 --- a/src/hooks/useSubscriptionPrice.ts +++ b/src/hooks/useSubscriptionPrice.ts @@ -4,49 +4,6 @@ import ONYXKEYS from '@src/ONYXKEYS'; import usePreferredCurrency from './usePreferredCurrency'; import useSubscriptionPlan from './useSubscriptionPlan'; -const SUBSCRIPTION_PRICES = { - [CONST.PAYMENT_CARD_CURRENCY.USD]: { - [CONST.POLICY.TYPE.CORPORATE]: { - [CONST.SUBSCRIPTION.TYPE.ANNUAL]: 900, - [CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 1800, - }, - [CONST.POLICY.TYPE.TEAM]: { - [CONST.SUBSCRIPTION.TYPE.ANNUAL]: 500, - [CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 1000, - }, - }, - [CONST.PAYMENT_CARD_CURRENCY.AUD]: { - [CONST.POLICY.TYPE.CORPORATE]: { - [CONST.SUBSCRIPTION.TYPE.ANNUAL]: 1500, - [CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 3000, - }, - [CONST.POLICY.TYPE.TEAM]: { - [CONST.SUBSCRIPTION.TYPE.ANNUAL]: 700, - [CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 1400, - }, - }, - [CONST.PAYMENT_CARD_CURRENCY.GBP]: { - [CONST.POLICY.TYPE.CORPORATE]: { - [CONST.SUBSCRIPTION.TYPE.ANNUAL]: 700, - [CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 1400, - }, - [CONST.POLICY.TYPE.TEAM]: { - [CONST.SUBSCRIPTION.TYPE.ANNUAL]: 400, - [CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 800, - }, - }, - [CONST.PAYMENT_CARD_CURRENCY.NZD]: { - [CONST.POLICY.TYPE.CORPORATE]: { - [CONST.SUBSCRIPTION.TYPE.ANNUAL]: 1600, - [CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 3200, - }, - [CONST.POLICY.TYPE.TEAM]: { - [CONST.SUBSCRIPTION.TYPE.ANNUAL]: 800, - [CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 1600, - }, - }, -} as const; - function useSubscriptionPrice(): number { const preferredCurrency = usePreferredCurrency(); const subscriptionPlan = useSubscriptionPlan(); @@ -56,7 +13,7 @@ function useSubscriptionPrice(): number { return 0; } - return SUBSCRIPTION_PRICES[preferredCurrency][subscriptionPlan][privateSubscription.type]; + return CONST.SUBSCRIPTION_PRICES[preferredCurrency][subscriptionPlan][privateSubscription.type]; } export default useSubscriptionPrice; diff --git a/src/languages/en.ts b/src/languages/en.ts index 77e3b882b892a..78dfcc89c0716 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -4344,8 +4344,6 @@ const translations = { onlyAvailableOnPlan: 'Per diem are only available on the Control plan, starting at ', }, pricing: { - collect: '$5 ', - amount: '$9 ', perActiveMember: 'per active member per month.', }, note: { diff --git a/src/languages/es.ts b/src/languages/es.ts index 09a0394ea6a0d..9dbce1a9999c0 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -4415,8 +4415,6 @@ const translations = { aboutOurPlans: 'sobre nuestros planes y precios.', }, pricing: { - collect: '$5 ', - amount: '$9 ', perActiveMember: 'por miembro activo al mes.', }, upgradeToUnlock: 'Desbloquear esta función', diff --git a/src/pages/workspace/upgrade/UpgradeIntro.tsx b/src/pages/workspace/upgrade/UpgradeIntro.tsx index 277e29ec6db10..a13519c87ad08 100644 --- a/src/pages/workspace/upgrade/UpgradeIntro.tsx +++ b/src/pages/workspace/upgrade/UpgradeIntro.tsx @@ -11,10 +11,12 @@ import Text from '@components/Text'; import TextLink from '@components/TextLink'; import useEnvironment from '@hooks/useEnvironment'; import useLocalize from '@hooks/useLocalize'; +import usePreferredCurrency from '@hooks/usePreferredCurrency'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; import useSubscriptionPlan from '@hooks/useSubscriptionPlan'; import useThemeStyles from '@hooks/useThemeStyles'; import {openLink} from '@libs/actions/Link'; +import {convertToShortDisplayString} from '@libs/CurrencyUtils'; import Navigation from '@libs/Navigation/Navigation'; import CONST from '@src/CONST'; import ROUTES from '@src/ROUTES'; @@ -34,6 +36,14 @@ function UpgradeIntro({feature, onUpgrade, buttonDisabled, loading, isCategorizi const {translate} = useLocalize(); const {environmentURL} = useEnvironment(); const subscriptionPlan = useSubscriptionPlan(); + const preferredCurrency = usePreferredCurrency(); + + const formattedPrice = React.useMemo(() => { + const upgradePlan = isCategorizing ? CONST.POLICY.TYPE.TEAM : CONST.POLICY.TYPE.CORPORATE; + const upgradeCurrency = Object.hasOwn(CONST.SUBSCRIPTION_PRICES, preferredCurrency) ? preferredCurrency : CONST.PAYMENT_CARD_CURRENCY.USD; + const upgradePrice = CONST.SUBSCRIPTION_PRICES[upgradeCurrency][upgradePlan][CONST.SUBSCRIPTION.TYPE.ANNUAL]; + return `${convertToShortDisplayString(upgradePrice, upgradeCurrency)} `; + }, [preferredCurrency, isCategorizing]); if (!feature) { return ( @@ -77,9 +87,7 @@ function UpgradeIntro({feature, onUpgrade, buttonDisabled, loading, isCategorizi {translate(feature.description)} {translate(`workspace.upgrade.${feature.id}.onlyAvailableOnPlan`)} - - {isCategorizing ? translate(`workspace.upgrade.pricing.collect`) : translate(`workspace.upgrade.pricing.amount`)} - + {formattedPrice} {translate(`workspace.upgrade.pricing.perActiveMember`)}