diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json index f36203ad7a..6d1c814ed2 100644 --- a/services/web/frontend/extracted-translations.json +++ b/services/web/frontend/extracted-translations.json @@ -1981,7 +1981,6 @@ "student_disclaimer": "", "subject": "", "subject_area": "", - "subject_to_additional_vat": "", "submit_title": "", "subscribe": "", "subscribe_now": "", @@ -2038,6 +2037,7 @@ "take_survey": "", "tax_id_number": "", "tax_id_type": "", + "taxes_may_be_added": "", "tell_the_project_owner_and_ask_them_to_upgrade": "", "template": "", "template_description": "", diff --git a/services/web/frontend/js/features/subscription/components/shared/price-exceptions.tsx b/services/web/frontend/js/features/subscription/components/shared/price-exceptions.tsx index 586eec7370..75e7ae9ab8 100644 --- a/services/web/frontend/js/features/subscription/components/shared/price-exceptions.tsx +++ b/services/web/frontend/js/features/subscription/components/shared/price-exceptions.tsx @@ -7,13 +7,15 @@ type PriceExceptionsProps = { export function PriceExceptions({ subscription }: PriceExceptionsProps) { const { t } = useTranslation() - const { activeCoupons } = subscription.payment + const { activeCoupons, taxRate } = subscription.payment return ( <> -

- * {t('subject_to_additional_vat')} -

+ {!(taxRate > 0) && ( +

+ * {t('taxes_may_be_added')} +

+ )} {activeCoupons.length > 0 && ( <> * {t('coupons_not_included')}: diff --git a/services/web/frontend/js/features/subscription/components/successful-subscription/successful-subscription.tsx b/services/web/frontend/js/features/subscription/components/successful-subscription/successful-subscription.tsx index 68dac21626..ab2d3492c4 100644 --- a/services/web/frontend/js/features/subscription/components/successful-subscription/successful-subscription.tsx +++ b/services/web/frontend/js/features/subscription/components/successful-subscription/successful-subscription.tsx @@ -178,9 +178,7 @@ function UpgradeSuccess({ components={[, ]} // eslint-disable-line react/jsx-key />

-

- * {t('subject_to_additional_vat')} -

+ {benefitsText &&

{benefitsText}

}

Tell the project owner and ask them to upgrade their Overleaf plan if you need more compile time.", "template": "Template", "template_approved_by_publisher": "This template has been approved by the publisher", diff --git a/services/web/locales/fr.json b/services/web/locales/fr.json index c3512d7290..8e8d7c13c1 100644 --- a/services/web/locales/fr.json +++ b/services/web/locales/fr.json @@ -1008,7 +1008,6 @@ "student": "Étudiant·e", "student_disclaimer": "Cette réduction pour l’éducation s’applique à tous les étudiant·e·s des établissements du secondaire ou du supérieur (lycées et universités). Nous pouvons être amenés à vous contacter pour confirmer votre éligibilité à cette réduction.", "subject": "Objet", - "subject_to_additional_vat": "Selon votre pays, les prix peuvent en plus être sujets à la TVA.", "submit": "envoyer", "submit_title": "Publier", "subscribe": "S’abonner", @@ -1035,6 +1034,7 @@ "tag_name_is_already_used": "L’étiquette \"__tagName__\" existe déjà", "tags": "Étiquettes", "take_me_home": "Retour à la maison !", + "taxes_may_be_added": "Selon votre pays, les prix peuvent en plus être sujets à la TVA.", "template_description": "Description des modèles", "template_gallery": "Galerie de modèles", "template_not_found_description": "Cette méthode de création de projets à partir de modèles n’est plus disponible. Merci de vous rendre sur notre galerie des modèles pour trouver d’autres modèles.", diff --git a/services/web/locales/sv.json b/services/web/locales/sv.json index dff1ceed88..1dc4baad0d 100644 --- a/services/web/locales/sv.json +++ b/services/web/locales/sv.json @@ -761,7 +761,6 @@ "student": "Student", "student_disclaimer": "Studentrabatten gäller för alla studenter på gymnasienivå eller högre. Vi kan komma att kontakta dig för att bekräfta din behörighet för rabatten.", "subject": "Ämne", - "subject_to_additional_vat": "Moms kan tillkomma till priser beroende på ditt land.", "submit": "Skicka", "submit_title": "Skicka in", "subscribe": "Prenumerera", @@ -786,6 +785,7 @@ "syntax_validation": "Kodkontroll", "tag_name_cannot_exceed_characters": "Taggnamnet får inte överstiga __maxLength__ tecken.", "take_me_home": "Ta mig härifrån!", + "taxes_may_be_added": "Moms kan tillkomma till priser beroende på ditt land.", "template_approved_by_publisher": "Denna mall har godkänts av utgivaren", "template_description": "Mallbeskrivning", "template_gallery": "Mallgalleri", diff --git a/services/web/locales/zh-CN.json b/services/web/locales/zh-CN.json index a64ba1d04c..e77193b897 100644 --- a/services/web/locales/zh-CN.json +++ b/services/web/locales/zh-CN.json @@ -1979,7 +1979,6 @@ "students": "学生", "subject": "主题", "subject_area": "主题区", - "subject_to_additional_vat": "价格可能会受到额外的增值税,取决于您的国家。", "submit": "提交", "submit_title": "提交", "subscribe": "订阅", @@ -2030,6 +2029,7 @@ "tags": "标签", "take_me_home": "我要返回!", "take_survey": "参加调查", + "taxes_may_be_added": "价格可能会受到额外的增值税,取决于您的国家。", "tell_the_project_owner_and_ask_them_to_upgrade": "如果您需要更多编译时间,<0>告诉项目所有者并要求他们升级其 Overleaf 计划。", "template": "模版", "template_approved_by_publisher": "该模板已获得发布者批准", diff --git a/services/web/test/frontend/features/subscription/components/dashboard/states/active/active.test.tsx b/services/web/test/frontend/features/subscription/components/dashboard/states/active/active.test.tsx index b7daf6b80d..62153e8a99 100644 --- a/services/web/test/frontend/features/subscription/components/dashboard/states/active/active.test.tsx +++ b/services/web/test/frontend/features/subscription/components/dashboard/states/active/active.test.tsx @@ -82,9 +82,17 @@ describe('', function () { screen.getByRole('heading', { name: subscription.plan.name, level: 3 }) - screen.getByText( - '* Prices may be subject to additional VAT, depending on your country.' - ) + if (subscription.payment.taxRate > 0) { + expect( + screen.queryByText( + '* Taxes may be added, depending on your billing address.' + ) + ).to.be.null + } else { + screen.getByText( + '* Taxes may be added, depending on your billing address.' + ) + } screen.getByRole('link', { name: 'View invoices' }) diff --git a/services/web/test/frontend/features/subscription/components/successful-subscription/successful-subscription.test.tsx b/services/web/test/frontend/features/subscription/components/successful-subscription/successful-subscription.test.tsx index b7cb4445b4..ed6fef8aba 100644 --- a/services/web/test/frontend/features/subscription/components/successful-subscription/successful-subscription.test.tsx +++ b/services/web/test/frontend/features/subscription/components/successful-subscription/successful-subscription.test.tsx @@ -4,6 +4,7 @@ import SuccessfulSubscription from '../../../../../../frontend/js/features/subsc import { renderWithSubscriptionDashContext } from '../../helpers/render-with-subscription-dash-context' import { annualActiveSubscription, + annualActiveSubscriptionEuro, annualActiveSubscriptionPro, } from '../../fixtures/subscriptions' import { ExposedSettings } from '../../../../../../types/exposed-settings' @@ -123,7 +124,7 @@ describe('successful subscription page', function () { ).to.equal( `The next payment of ${annualActiveSubscriptionPro.payment.displayPrice} will be collected on ${annualActiveSubscriptionPro.payment.nextPaymentDueAt}.` ) - screen.getByText(/prices may be subject to additional vat/i) + screen.getByText(/taxes may be added, depending on your billing address/i) screen.getByText(/full access to every AI tool/i, { exact: false }) @@ -162,5 +163,27 @@ describe('successful subscription page', function () { screen.getByRole('heading', { name: /thanks for subscribing/i }) }) + + it('hides tax disclaimer when tax is already included in the price', function () { + renderWithSubscriptionDashContext( + + + , + { + metaTags: [ + { + name: 'ol-ExposedSettings', + value: { + adminEmail: 'foo@example.com', + } as ExposedSettings, + }, + { name: 'ol-subscription', value: annualActiveSubscriptionEuro }, + { name: 'ol-isUpgrade', value: true }, + ], + } + ) + + expect(screen.queryByText(/taxes may be added/i)).to.be.null + }) }) })