mirror of
https://github.com/bitwarden/server.git
synced 2026-01-31 06:03:12 +08:00
[PM-30697] [PM-30698] Renewal email copy updates (#6875)
* feat(families-renewal): Update copy * feat(premium-renewal): Add new var, update copy
This commit is contained in:
@@ -627,7 +627,7 @@ public class UpcomingInvoiceHandler(
|
|||||||
{
|
{
|
||||||
BaseMonthlyRenewalPrice = (premiumPlan.Seat.Price / 12).ToString("C", new CultureInfo("en-US")),
|
BaseMonthlyRenewalPrice = (premiumPlan.Seat.Price / 12).ToString("C", new CultureInfo("en-US")),
|
||||||
DiscountAmount = $"{coupon.PercentOff}%",
|
DiscountAmount = $"{coupon.PercentOff}%",
|
||||||
DiscountedMonthlyRenewalPrice = (discountedAnnualRenewalPrice / 12).ToString("C", new CultureInfo("en-US"))
|
DiscountedAnnualRenewalPrice = discountedAnnualRenewalPrice.ToString("C", new CultureInfo("en-US"))
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
at {{BaseAnnualRenewalPrice}} + tax.
|
at {{BaseAnnualRenewalPrice}} + tax.
|
||||||
</mj-text>
|
</mj-text>
|
||||||
<mj-text font-size="16px" line-height="24px" padding="10px 15px 15px 15px">
|
<mj-text font-size="16px" line-height="24px" padding="10px 15px 15px 15px">
|
||||||
As a long time Bitwarden customer, you will receive a one-time {{DiscountAmount}} loyalty discount for this renewal.
|
As a long time Bitwarden customer, you will receive a one-time {{DiscountAmount}} loyalty discount for this year's renewal.
|
||||||
This year's renewal will now be billed annually at {{DiscountedAnnualRenewalPrice}} + tax.
|
This renewal will now be billed annually at {{DiscountedAnnualRenewalPrice}} + tax.
|
||||||
</mj-text>
|
</mj-text>
|
||||||
<mj-text font-size="16px" line-height="24px" padding="10px 15px">
|
<mj-text font-size="16px" line-height="24px" padding="10px 15px">
|
||||||
Questions? Contact
|
Questions? Contact
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
Your Bitwarden Premium subscription renews in 15 days. The price is updating to {{BaseMonthlyRenewalPrice}}/month, billed annually.
|
Your Bitwarden Premium subscription renews in 15 days. The price is updating to {{BaseMonthlyRenewalPrice}}/month, billed annually.
|
||||||
</mj-text>
|
</mj-text>
|
||||||
<mj-text font-size="16px" line-height="24px" padding="10px 15px 15px 15px">
|
<mj-text font-size="16px" line-height="24px" padding="10px 15px 15px 15px">
|
||||||
As an existing Bitwarden customer, you will receive a one-time {{DiscountAmount}} loyalty discount for this renewal.
|
As an existing Bitwarden customer, you will receive a one-time {{DiscountAmount}} loyalty discount for this year's renewal.
|
||||||
This year's renewal now will be {{DiscountedMonthlyRenewalPrice}}/month, billed annually.
|
This renewal will now be billed annually at {{DiscountedAnnualRenewalPrice}} + tax.
|
||||||
</mj-text>
|
</mj-text>
|
||||||
<mj-text font-size="16px" line-height="24px" padding="10px 15px">
|
<mj-text font-size="16px" line-height="24px" padding="10px 15px">
|
||||||
Questions? Contact
|
Questions? Contact
|
||||||
|
|||||||
@@ -202,8 +202,8 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td align="left" style="font-size:0px;padding:10px 15px 15px 15px;word-break:break-word;">
|
<td align="left" style="font-size:0px;padding:10px 15px 15px 15px;word-break:break-word;">
|
||||||
|
|
||||||
<div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#1B2029;">As a long time Bitwarden customer, you will receive a one-time {{DiscountAmount}} loyalty discount for this renewal.
|
<div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#1B2029;">As a long time Bitwarden customer, you will receive a one-time {{DiscountAmount}} loyalty discount for this year's renewal.
|
||||||
This year's renewal will now be billed annually at {{DiscountedAnnualRenewalPrice}} + tax.</div>
|
This renewal will now be billed annually at {{DiscountedAnnualRenewalPrice}} + tax.</div>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Your Bitwarden Families subscription renews in 15 days. The price is updating to {{BaseMonthlyRenewalPrice}}/month, billed annually
|
Your Bitwarden Families subscription renews in 15 days. The price is updating to {{BaseMonthlyRenewalPrice}}/month, billed annually
|
||||||
at {{BaseAnnualRenewalPrice}} + tax.
|
at {{BaseAnnualRenewalPrice}} + tax.
|
||||||
|
|
||||||
As a long time Bitwarden customer, you will receive a one-time {{DiscountAmount}} loyalty discount for this renewal.
|
As a long time Bitwarden customer, you will receive a one-time {{DiscountAmount}} loyalty discount for this year's renewal.
|
||||||
This year's renewal will now be billed annually at {{DiscountedAnnualRenewalPrice}} + tax.
|
This renewal will now be billed annually at {{DiscountedAnnualRenewalPrice}} + tax.
|
||||||
|
|
||||||
Questions? Contact support@bitwarden.com
|
Questions? Contact support@bitwarden.com
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ namespace Bit.Core.Models.Mail.Billing.Renewal.Premium;
|
|||||||
public class PremiumRenewalMailView : BaseMailView
|
public class PremiumRenewalMailView : BaseMailView
|
||||||
{
|
{
|
||||||
public required string BaseMonthlyRenewalPrice { get; set; }
|
public required string BaseMonthlyRenewalPrice { get; set; }
|
||||||
public required string DiscountedMonthlyRenewalPrice { get; set; }
|
public required string DiscountedAnnualRenewalPrice { get; set; }
|
||||||
public required string DiscountAmount { get; set; }
|
public required string DiscountAmount { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -201,8 +201,8 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td align="left" style="font-size:0px;padding:10px 15px 15px 15px;word-break:break-word;">
|
<td align="left" style="font-size:0px;padding:10px 15px 15px 15px;word-break:break-word;">
|
||||||
|
|
||||||
<div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#1B2029;">As an existing Bitwarden customer, you will receive a one-time {{DiscountAmount}} loyalty discount for this renewal.
|
<div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#1B2029;">As an existing Bitwarden customer, you will receive a one-time {{DiscountAmount}} loyalty discount for this year's renewal.
|
||||||
This year's renewal now will be {{DiscountedMonthlyRenewalPrice}}/month, billed annually.</div>
|
This renewal will now be billed annually at {{DiscountedAnnualRenewalPrice}} + tax.</div>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
Your Bitwarden Premium subscription renews in 15 days. The price is updating to {{BaseMonthlyRenewalPrice}}/month, billed annually.
|
Your Bitwarden Premium subscription renews in 15 days. The price is updating to {{BaseMonthlyRenewalPrice}}/month, billed annually.
|
||||||
|
|
||||||
As an existing Bitwarden customer, you will receive a one-time {{DiscountAmount}} loyalty discount for this renewal.
|
As an existing Bitwarden customer, you will receive a one-time {{DiscountAmount}} loyalty discount for this year's renewal.
|
||||||
This year's renewal now will be {{DiscountedMonthlyRenewalPrice}}/month, billed annually.
|
This renewal will now be billed annually at {{DiscountedAnnualRenewalPrice}} + tax.
|
||||||
|
|
||||||
Questions? Contact support@bitwarden.com
|
Questions? Contact support@bitwarden.com
|
||||||
|
|||||||
@@ -280,7 +280,7 @@ public class UpcomingInvoiceHandlerTests
|
|||||||
email.ToEmails.Contains("user@example.com") &&
|
email.ToEmails.Contains("user@example.com") &&
|
||||||
email.Subject == "Your Bitwarden Premium renewal is updating" &&
|
email.Subject == "Your Bitwarden Premium renewal is updating" &&
|
||||||
email.View.BaseMonthlyRenewalPrice == (plan.Seat.Price / 12).ToString("C", new CultureInfo("en-US")) &&
|
email.View.BaseMonthlyRenewalPrice == (plan.Seat.Price / 12).ToString("C", new CultureInfo("en-US")) &&
|
||||||
email.View.DiscountedMonthlyRenewalPrice == (discountedPrice / 12).ToString("C", new CultureInfo("en-US")) &&
|
email.View.DiscountedAnnualRenewalPrice == discountedPrice.ToString("C", new CultureInfo("en-US")) &&
|
||||||
email.View.DiscountAmount == $"{coupon.PercentOff}%"
|
email.View.DiscountAmount == $"{coupon.PercentOff}%"
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@@ -2436,7 +2436,7 @@ public class UpcomingInvoiceHandlerTests
|
|||||||
email.Subject == "Your Bitwarden Premium renewal is updating" &&
|
email.Subject == "Your Bitwarden Premium renewal is updating" &&
|
||||||
email.View.BaseMonthlyRenewalPrice == (plan.Seat.Price / 12).ToString("C", new CultureInfo("en-US")) &&
|
email.View.BaseMonthlyRenewalPrice == (plan.Seat.Price / 12).ToString("C", new CultureInfo("en-US")) &&
|
||||||
email.View.DiscountAmount == "30%" &&
|
email.View.DiscountAmount == "30%" &&
|
||||||
email.View.DiscountedMonthlyRenewalPrice == (expectedDiscountedPrice / 12).ToString("C", new CultureInfo("en-US"))
|
email.View.DiscountedAnnualRenewalPrice == expectedDiscountedPrice.ToString("C", new CultureInfo("en-US"))
|
||||||
));
|
));
|
||||||
|
|
||||||
await _mailService.DidNotReceive().SendInvoiceUpcoming(
|
await _mailService.DidNotReceive().SendInvoiceUpcoming(
|
||||||
|
|||||||
Reference in New Issue
Block a user