Quellcode durchsuchen

Merge pull request #24164 from overleaf/ds-group-discount-10-percent-february

Group plans - Reintroduce 10% discount for group plans (Part 1, 2 & 3 Combined)

GitOrigin-RevId: f3a59a65bbd300cc06f70e179e794c32ed7970ce
Davinder Singh vor 1 Jahr
Ursprung
Commit
7ec4cbd841

+ 9 - 0
services/web/app/src/Features/Subscription/SubscriptionController.js

@@ -48,6 +48,14 @@ async function userSubscriptionPage(req, res) {
 
   await SplitTestHandler.promises.getAssignment(req, res, 'pause-subscription')
 
+  const groupPricingDiscount = await SplitTestHandler.promises.getAssignment(
+    req,
+    res,
+    'group-discount-10'
+  )
+
+  const showGroupDiscount = groupPricingDiscount.variant === 'enabled'
+
   const { variant: flexibleLicensingVariant } =
     await SplitTestHandler.promises.getAssignment(
       req,
@@ -167,6 +175,7 @@ async function userSubscriptionPage(req, res) {
     managedGroupSubscriptions,
     managedInstitutions,
     managedPublishers,
+    showGroupDiscount,
     currentInstitutionsWithLicence,
     canUseFlexibleLicensing:
       personalSubscription?.plan?.canUseFlexibleLicensing,

+ 237 - 237
services/web/app/templates/plans/groups.json

@@ -1029,177 +1029,177 @@
     "professional": {
       "AUD": {
         "2": {
-          "price_in_cents": 91800,
+          "price_in_cents": 82600,
           "additional_license_legacy_price_in_cents": 32100
         },
         "3": {
-          "price_in_cents": 137700,
+          "price_in_cents": 123900,
           "additional_license_legacy_price_in_cents": 32100
         },
         "4": {
-          "price_in_cents": 183600,
+          "price_in_cents": 165200,
           "additional_license_legacy_price_in_cents": 32100
         },
         "5": {
-          "price_in_cents": 229500,
+          "price_in_cents": 206500,
           "additional_license_legacy_price_in_cents": 32100
         },
         "10": {
-          "price_in_cents": 459000,
+          "price_in_cents": 413000,
           "additional_license_legacy_price_in_cents": 29800
         },
         "20": {
-          "price_in_cents": 918000,
+          "price_in_cents": 826000,
           "additional_license_legacy_price_in_cents": 27500
         },
         "50": {
-          "price_in_cents": 2295000,
+          "price_in_cents": 2065000,
           "additional_license_legacy_price_in_cents": 25200
         }
       },
       "BRL": {
         "2": {
-          "price_in_cents": 199800,
+          "price_in_cents": 179800,
           "additional_license_legacy_price_in_cents": 69900
         },
         "3": {
-          "price_in_cents": 299700,
+          "price_in_cents": 269700,
           "additional_license_legacy_price_in_cents": 69900
         },
         "4": {
-          "price_in_cents": 399600,
+          "price_in_cents": 359600,
           "additional_license_legacy_price_in_cents": 69900
         },
         "5": {
-          "price_in_cents": 499500,
+          "price_in_cents": 449500,
           "additional_license_legacy_price_in_cents": 69900
         },
         "10": {
-          "price_in_cents": 999000,
+          "price_in_cents": 899000,
           "additional_license_legacy_price_in_cents": 64900
         },
         "20": {
-          "price_in_cents": 1998000,
+          "price_in_cents": 1798000,
           "additional_license_legacy_price_in_cents": 59900
         },
         "50": {
-          "price_in_cents": 4995000,
+          "price_in_cents": 4495000,
           "additional_license_legacy_price_in_cents": 54900
         }
       },
       "CAD": {
         "2": {
-          "price_in_cents": 89800,
+          "price_in_cents": 80800,
           "additional_license_legacy_price_in_cents": 31400
         },
         "3": {
-          "price_in_cents": 134700,
+          "price_in_cents": 121200,
           "additional_license_legacy_price_in_cents": 31400
         },
         "4": {
-          "price_in_cents": 179600,
+          "price_in_cents": 161600,
           "additional_license_legacy_price_in_cents": 31400
         },
         "5": {
-          "price_in_cents": 224500,
+          "price_in_cents": 202000,
           "additional_license_legacy_price_in_cents": 31400
         },
         "10": {
-          "price_in_cents": 449000,
+          "price_in_cents": 404000,
           "additional_license_legacy_price_in_cents": 29100
         },
         "20": {
-          "price_in_cents": 898000,
+          "price_in_cents": 808000,
           "additional_license_legacy_price_in_cents": 26900
         },
         "50": {
-          "price_in_cents": 2245000,
+          "price_in_cents": 2020000,
           "additional_license_legacy_price_in_cents": 24600
         }
       },
       "CHF": {
         "2": {
-          "price_in_cents": 79800,
+          "price_in_cents": 71800,
           "additional_license_legacy_price_in_cents": 49900
         },
         "3": {
-          "price_in_cents": 119700,
+          "price_in_cents": 107700,
           "additional_license_legacy_price_in_cents": 49900
         },
         "4": {
-          "price_in_cents": 159600,
+          "price_in_cents": 143600,
           "additional_license_legacy_price_in_cents": 49900
         },
         "5": {
-          "price_in_cents": 199500,
+          "price_in_cents": 179500,
           "additional_license_legacy_price_in_cents": 49900
         },
         "10": {
-          "price_in_cents": 399000,
+          "price_in_cents": 359000,
           "additional_license_legacy_price_in_cents": 25900
         },
         "20": {
-          "price_in_cents": 798000,
+          "price_in_cents": 718000,
           "additional_license_legacy_price_in_cents": 23900
         },
         "50": {
-          "price_in_cents": 1995000,
+          "price_in_cents": 1795000,
           "additional_license_legacy_price_in_cents": 21900
         }
       },
       "CLP": {
         "2": {
-          "price_in_cents": 48198000,
+          "price_in_cents": 43378200,
           "additional_license_legacy_price_in_cents": 16869300
         },
         "3": {
-          "price_in_cents": 72297000,
+          "price_in_cents": 65067300,
           "additional_license_legacy_price_in_cents": 16869300
         },
         "4": {
-          "price_in_cents": 96396000,
+          "price_in_cents": 86756400,
           "additional_license_legacy_price_in_cents": 16869300
         },
         "5": {
-          "price_in_cents": 120495000,
+          "price_in_cents": 108445500,
           "additional_license_legacy_price_in_cents": 16869300
         },
         "10": {
-          "price_in_cents": 240990000,
+          "price_in_cents": 216891000,
           "additional_license_legacy_price_in_cents": 15664300
         },
         "20": {
-          "price_in_cents": 481980000,
+          "price_in_cents": 433782000,
           "additional_license_legacy_price_in_cents": 14459400
         },
         "50": {
-          "price_in_cents": 1204950000,
+          "price_in_cents": 1084455000,
           "additional_license_legacy_price_in_cents": 13254400
         }
       },
       "COP": {
         "2": {
-          "price_in_cents": 157980000,
+          "price_in_cents": 142182000,
           "additional_license_legacy_price_in_cents": 55293000
         },
         "3": {
-          "price_in_cents": 236970000,
+          "price_in_cents": 213273000,
           "additional_license_legacy_price_in_cents": 55293000
         },
         "4": {
-          "price_in_cents": 315960000,
+          "price_in_cents": 284364000,
           "additional_license_legacy_price_in_cents": 55293000
         },
         "5": {
-          "price_in_cents": 394950000,
+          "price_in_cents": 355455000,
           "additional_license_legacy_price_in_cents": 55293000
         },
         "10": {
-          "price_in_cents": 789900000,
+          "price_in_cents": 710910000,
           "additional_license_legacy_price_in_cents": 51343500
         },
         "20": {
-          "price_in_cents": 1579800000,
+          "price_in_cents": 1421820000,
           "additional_license_legacy_price_in_cents": 47394000
         },
         "50": {
@@ -1209,331 +1209,331 @@
       },
       "DKK": {
         "2": {
-          "price_in_cents": 475800,
+          "price_in_cents": 428200,
           "additional_license_legacy_price_in_cents": 166500
         },
         "3": {
-          "price_in_cents": 713700,
+          "price_in_cents": 642300,
           "additional_license_legacy_price_in_cents": 166500
         },
         "4": {
-          "price_in_cents": 951600,
+          "price_in_cents": 856400,
           "additional_license_legacy_price_in_cents": 166500
         },
         "5": {
-          "price_in_cents": 1189500,
+          "price_in_cents": 1070500,
           "additional_license_legacy_price_in_cents": 166500
         },
         "10": {
-          "price_in_cents": 2379000,
+          "price_in_cents": 2141000,
           "additional_license_legacy_price_in_cents": 154600
         },
         "20": {
-          "price_in_cents": 4758000,
+          "price_in_cents": 4282000,
           "additional_license_legacy_price_in_cents": 142700
         },
         "50": {
-          "price_in_cents": 11895000,
+          "price_in_cents": 10705000,
           "additional_license_legacy_price_in_cents": 130800
         }
       },
       "EUR": {
         "2": {
-          "price_in_cents": 73800,
+          "price_in_cents": 66400,
           "additional_license_legacy_price_in_cents": 25800
         },
         "3": {
-          "price_in_cents": 110700,
+          "price_in_cents": 99600,
           "additional_license_legacy_price_in_cents": 25800
         },
         "4": {
-          "price_in_cents": 147600,
+          "price_in_cents": 132800,
           "additional_license_legacy_price_in_cents": 25800
         },
         "5": {
-          "price_in_cents": 184500,
+          "price_in_cents": 166000,
           "additional_license_legacy_price_in_cents": 25800
         },
         "10": {
-          "price_in_cents": 369000,
+          "price_in_cents": 332000,
           "additional_license_legacy_price_in_cents": 23900
         },
         "20": {
-          "price_in_cents": 738000,
+          "price_in_cents": 664000,
           "additional_license_legacy_price_in_cents": 22100
         },
         "50": {
-          "price_in_cents": 1845000,
+          "price_in_cents": 1660000,
           "additional_license_legacy_price_in_cents": 20200
         }
       },
       "GBP": {
         "2": {
-          "price_in_cents": 63800,
+          "price_in_cents": 57400,
           "additional_license_legacy_price_in_cents": 22300
         },
         "3": {
-          "price_in_cents": 95700,
+          "price_in_cents": 86100,
           "additional_license_legacy_price_in_cents": 22300
         },
         "4": {
-          "price_in_cents": 127600,
+          "price_in_cents": 114800,
           "additional_license_legacy_price_in_cents": 22300
         },
         "5": {
-          "price_in_cents": 159500,
+          "price_in_cents": 143500,
           "additional_license_legacy_price_in_cents": 22300
         },
         "10": {
-          "price_in_cents": 319000,
+          "price_in_cents": 287000,
           "additional_license_legacy_price_in_cents": 20700
         },
         "20": {
-          "price_in_cents": 638000,
+          "price_in_cents": 574000,
           "additional_license_legacy_price_in_cents": 19100
         },
         "50": {
-          "price_in_cents": 1595000,
+          "price_in_cents": 1435000,
           "additional_license_legacy_price_in_cents": 17500
         }
       },
       "INR": {
         "2": {
-          "price_in_cents": 1919800,
+          "price_in_cents": 1727800,
           "additional_license_legacy_price_in_cents": 671900
         },
         "3": {
-          "price_in_cents": 2879700,
+          "price_in_cents": 2591700,
           "additional_license_legacy_price_in_cents": 671900
         },
         "4": {
-          "price_in_cents": 3839600,
+          "price_in_cents": 3455600,
           "additional_license_legacy_price_in_cents": 671900
         },
         "5": {
-          "price_in_cents": 4799500,
+          "price_in_cents": 4319500,
           "additional_license_legacy_price_in_cents": 671900
         },
         "10": {
-          "price_in_cents": 9599000,
+          "price_in_cents": 8639000,
           "additional_license_legacy_price_in_cents": 623900
         },
         "20": {
-          "price_in_cents": 19198000,
+          "price_in_cents": 17278000,
           "additional_license_legacy_price_in_cents": 575900
         },
         "50": {
-          "price_in_cents": 47995000,
+          "price_in_cents": 43195000,
           "additional_license_legacy_price_in_cents": 527900
         }
       },
       "MXN": {
         "2": {
-          "price_in_cents": 1179800,
+          "price_in_cents": 1061800,
           "additional_license_legacy_price_in_cents": 412900
         },
         "3": {
-          "price_in_cents": 1769700,
+          "price_in_cents": 1592700,
           "additional_license_legacy_price_in_cents": 412900
         },
         "4": {
-          "price_in_cents": 2359600,
+          "price_in_cents": 2123600,
           "additional_license_legacy_price_in_cents": 412900
         },
         "5": {
-          "price_in_cents": 2949500,
+          "price_in_cents": 2654500,
           "additional_license_legacy_price_in_cents": 412900
         },
         "10": {
-          "price_in_cents": 5899000,
+          "price_in_cents": 5309000,
           "additional_license_legacy_price_in_cents": 383400
         },
         "20": {
-          "price_in_cents": 11798000,
+          "price_in_cents": 10618000,
           "additional_license_legacy_price_in_cents": 353900
         },
         "50": {
-          "price_in_cents": 29495000,
+          "price_in_cents": 26545000,
           "additional_license_legacy_price_in_cents": 324400
         }
       },
       "NOK": {
         "2": {
-          "price_in_cents": 573800,
+          "price_in_cents": 516400,
           "additional_license_legacy_price_in_cents": 200800
         },
         "3": {
-          "price_in_cents": 860700,
+          "price_in_cents": 774600,
           "additional_license_legacy_price_in_cents": 200800
         },
         "4": {
-          "price_in_cents": 1147600,
+          "price_in_cents": 1032800,
           "additional_license_legacy_price_in_cents": 200800
         },
         "5": {
-          "price_in_cents": 1434500,
+          "price_in_cents": 1291000,
           "additional_license_legacy_price_in_cents": 200800
         },
         "10": {
-          "price_in_cents": 2869000,
+          "price_in_cents": 2582000,
           "additional_license_legacy_price_in_cents": 186400
         },
         "20": {
-          "price_in_cents": 5738000,
+          "price_in_cents": 5164000,
           "additional_license_legacy_price_in_cents": 172100
         },
         "50": {
-          "price_in_cents": 14345000,
+          "price_in_cents": 12910000,
           "additional_license_legacy_price_in_cents": 157700
         }
       },
       "NZD": {
         "2": {
-          "price_in_cents": 91800,
+          "price_in_cents": 82600,
           "additional_license_legacy_price_in_cents": 32100
         },
         "3": {
-          "price_in_cents": 137700,
+          "price_in_cents": 123900,
           "additional_license_legacy_price_in_cents": 32100
         },
         "4": {
-          "price_in_cents": 183600,
+          "price_in_cents": 165200,
           "additional_license_legacy_price_in_cents": 32100
         },
         "5": {
-          "price_in_cents": 229500,
+          "price_in_cents": 206500,
           "additional_license_legacy_price_in_cents": 32100
         },
         "10": {
-          "price_in_cents": 459000,
+          "price_in_cents": 413000,
           "additional_license_legacy_price_in_cents": 29800
         },
         "20": {
-          "price_in_cents": 918000,
+          "price_in_cents": 826000,
           "additional_license_legacy_price_in_cents": 27500
         },
         "50": {
-          "price_in_cents": 2295000,
+          "price_in_cents": 2065000,
           "additional_license_legacy_price_in_cents": 25200
         }
       },
       "PEN": {
         "2": {
-          "price_in_cents": 191800,
+          "price_in_cents": 172600,
           "additional_license_legacy_price_in_cents": 67100
         },
         "3": {
-          "price_in_cents": 287700,
+          "price_in_cents": 258900,
           "additional_license_legacy_price_in_cents": 67100
         },
         "4": {
-          "price_in_cents": 383600,
+          "price_in_cents": 345200,
           "additional_license_legacy_price_in_cents": 67100
         },
         "5": {
-          "price_in_cents": 479500,
+          "price_in_cents": 431500,
           "additional_license_legacy_price_in_cents": 67100
         },
         "10": {
-          "price_in_cents": 959000,
+          "price_in_cents": 863000,
           "additional_license_legacy_price_in_cents": 62300
         },
         "20": {
-          "price_in_cents": 1918000,
+          "price_in_cents": 1726000,
           "additional_license_legacy_price_in_cents": 57500
         },
         "50": {
-          "price_in_cents": 4795000,
+          "price_in_cents": 4315000,
           "additional_license_legacy_price_in_cents": 52700
         }
       },
       "SEK": {
         "2": {
-          "price_in_cents": 573800,
+          "price_in_cents": 516400,
           "additional_license_legacy_price_in_cents": 200800
         },
         "3": {
-          "price_in_cents": 860700,
+          "price_in_cents": 774600,
           "additional_license_legacy_price_in_cents": 200800
         },
         "4": {
-          "price_in_cents": 1147600,
+          "price_in_cents": 1032800,
           "additional_license_legacy_price_in_cents": 200800
         },
         "5": {
-          "price_in_cents": 1434500,
+          "price_in_cents": 1291000,
           "additional_license_legacy_price_in_cents": 200800
         },
         "10": {
-          "price_in_cents": 2869000,
+          "price_in_cents": 2582000,
           "additional_license_legacy_price_in_cents": 186400
         },
         "20": {
-          "price_in_cents": 5738000,
+          "price_in_cents": 5164000,
           "additional_license_legacy_price_in_cents": 172100
         },
         "50": {
-          "price_in_cents": 14345000,
+          "price_in_cents": 12910000,
           "additional_license_legacy_price_in_cents": 157700
         }
       },
       "SGD": {
         "2": {
-          "price_in_cents": 103800,
+          "price_in_cents": 93400,
           "additional_license_legacy_price_in_cents": 36300
         },
         "3": {
-          "price_in_cents": 155700,
+          "price_in_cents": 140100,
           "additional_license_legacy_price_in_cents": 36300
         },
         "4": {
-          "price_in_cents": 207600,
+          "price_in_cents": 186800,
           "additional_license_legacy_price_in_cents": 36300
         },
         "5": {
-          "price_in_cents": 259500,
+          "price_in_cents": 233500,
           "additional_license_legacy_price_in_cents": 36300
         },
         "10": {
-          "price_in_cents": 519000,
+          "price_in_cents": 467000,
           "additional_license_legacy_price_in_cents": 33700
         },
         "20": {
-          "price_in_cents": 1038000,
+          "price_in_cents": 934000,
           "additional_license_legacy_price_in_cents": 31100
         },
         "50": {
-          "price_in_cents": 2595000,
+          "price_in_cents": 2335000,
           "additional_license_legacy_price_in_cents": 28500
         }
       },
       "USD": {
         "2": {
-          "price_in_cents": 79800,
+          "price_in_cents": 71800,
           "additional_license_legacy_price_in_cents": 27900
         },
         "3": {
-          "price_in_cents": 119700,
+          "price_in_cents": 107700,
           "additional_license_legacy_price_in_cents": 27900
         },
         "4": {
-          "price_in_cents": 159600,
+          "price_in_cents": 143600,
           "additional_license_legacy_price_in_cents": 27900
         },
         "5": {
-          "price_in_cents": 199500,
+          "price_in_cents": 179500,
           "additional_license_legacy_price_in_cents": 27900
         },
         "10": {
-          "price_in_cents": 399000,
+          "price_in_cents": 359000,
           "additional_license_legacy_price_in_cents": 25900
         },
         "20": {
-          "price_in_cents": 798000,
+          "price_in_cents": 718000,
           "additional_license_legacy_price_in_cents": 23900
         },
         "50": {
-          "price_in_cents": 1995000,
+          "price_in_cents": 1795000,
           "additional_license_legacy_price_in_cents": 21900
         }
       }
@@ -1541,511 +1541,511 @@
     "collaborator": {
       "AUD": {
         "2": {
-          "price_in_cents": 47800,
+          "price_in_cents": 43000,
           "additional_license_legacy_price_in_cents": 16700
         },
         "3": {
-          "price_in_cents": 71700,
+          "price_in_cents": 64500,
           "additional_license_legacy_price_in_cents": 16700
         },
         "4": {
-          "price_in_cents": 95600,
+          "price_in_cents": 86000,
           "additional_license_legacy_price_in_cents": 16700
         },
         "5": {
-          "price_in_cents": 119500,
+          "price_in_cents": 107500,
           "additional_license_legacy_price_in_cents": 16700
         },
         "10": {
-          "price_in_cents": 239000,
+          "price_in_cents": 215000,
           "additional_license_legacy_price_in_cents": 15500
         },
         "20": {
-          "price_in_cents": 478000,
+          "price_in_cents": 430000,
           "additional_license_legacy_price_in_cents": 14300
         },
         "50": {
-          "price_in_cents": 1195000,
+          "price_in_cents": 1075000,
           "additional_license_legacy_price_in_cents": 13100
         }
       },
       "BRL": {
         "2": {
-          "price_in_cents": 99800,
+          "price_in_cents": 89800,
           "additional_license_legacy_price_in_cents": 34900
         },
         "3": {
-          "price_in_cents": 149700,
+          "price_in_cents": 134700,
           "additional_license_legacy_price_in_cents": 34900
         },
         "4": {
-          "price_in_cents": 199600,
+          "price_in_cents": 179600,
           "additional_license_legacy_price_in_cents": 34900
         },
         "5": {
-          "price_in_cents": 249500,
+          "price_in_cents": 224500,
           "additional_license_legacy_price_in_cents": 34900
         },
         "10": {
-          "price_in_cents": 499000,
+          "price_in_cents": 449000,
           "additional_license_legacy_price_in_cents": 32400
         },
         "20": {
-          "price_in_cents": 998000,
+          "price_in_cents": 898000,
           "additional_license_legacy_price_in_cents": 29900
         },
         "50": {
-          "price_in_cents": 2495000,
+          "price_in_cents": 2245000,
           "additional_license_legacy_price_in_cents": 27400
         }
       },
       "CAD": {
         "2": {
-          "price_in_cents": 45800,
+          "price_in_cents": 41200,
           "additional_license_legacy_price_in_cents": 16000
         },
         "3": {
-          "price_in_cents": 68700,
+          "price_in_cents": 61800,
           "additional_license_legacy_price_in_cents": 16000
         },
         "4": {
-          "price_in_cents": 91600,
+          "price_in_cents": 82400,
           "additional_license_legacy_price_in_cents": 16000
         },
         "5": {
-          "price_in_cents": 114500,
+          "price_in_cents": 103000,
           "additional_license_legacy_price_in_cents": 16000
         },
         "10": {
-          "price_in_cents": 229000,
+          "price_in_cents": 206000,
           "additional_license_legacy_price_in_cents": 14800
         },
         "20": {
-          "price_in_cents": 458000,
+          "price_in_cents": 412000,
           "additional_license_legacy_price_in_cents": 13700
         },
         "50": {
-          "price_in_cents": 1145000,
+          "price_in_cents": 1030000,
           "additional_license_legacy_price_in_cents": 12500
         }
       },
       "CHF": {
         "2": {
-          "price_in_cents": 39800,
+          "price_in_cents": 35800,
           "additional_license_legacy_price_in_cents": 13900
         },
         "3": {
-          "price_in_cents": 59700,
+          "price_in_cents": 53700,
           "additional_license_legacy_price_in_cents": 13900
         },
         "4": {
-          "price_in_cents": 79600,
+          "price_in_cents": 71600,
           "additional_license_legacy_price_in_cents": 13900
         },
         "5": {
-          "price_in_cents": 99500,
+          "price_in_cents": 89500,
           "additional_license_legacy_price_in_cents": 13900
         },
         "10": {
-          "price_in_cents": 199000,
+          "price_in_cents": 179000,
           "additional_license_legacy_price_in_cents": 12900
         },
         "20": {
-          "price_in_cents": 398000,
+          "price_in_cents": 358000,
           "additional_license_legacy_price_in_cents": 11900
         },
         "50": {
-          "price_in_cents": 995000,
+          "price_in_cents": 895000,
           "additional_license_legacy_price_in_cents": 10900
         }
       },
       "CLP": {
         "2": {
-          "price_in_cents": 22198000,
+          "price_in_cents": 19978200,
           "additional_license_legacy_price_in_cents": 7769300
         },
         "3": {
-          "price_in_cents": 33297000,
+          "price_in_cents": 29967300,
           "additional_license_legacy_price_in_cents": 7769300
         },
         "4": {
-          "price_in_cents": 44396000,
+          "price_in_cents": 39956400,
           "additional_license_legacy_price_in_cents": 7769300
         },
         "5": {
-          "price_in_cents": 55495000,
+          "price_in_cents": 49945500,
           "additional_license_legacy_price_in_cents": 7769300
         },
         "10": {
-          "price_in_cents": 110990000,
+          "price_in_cents": 99891000,
           "additional_license_legacy_price_in_cents": 7214300
         },
         "20": {
-          "price_in_cents": 221980000,
+          "price_in_cents": 199782000,
           "additional_license_legacy_price_in_cents": 6659400
         },
         "50": {
-          "price_in_cents": 554950000,
+          "price_in_cents": 499455000,
           "additional_license_legacy_price_in_cents": 6104400
         }
       },
       "COP": {
         "2": {
-          "price_in_cents": 77980000,
+          "price_in_cents": 70182000,
           "additional_license_legacy_price_in_cents": 27293000
         },
         "3": {
-          "price_in_cents": 116970000,
+          "price_in_cents": 105273000,
           "additional_license_legacy_price_in_cents": 27293000
         },
         "4": {
-          "price_in_cents": 155960000,
+          "price_in_cents": 140364000,
           "additional_license_legacy_price_in_cents": 27293000
         },
         "5": {
-          "price_in_cents": 194950000,
+          "price_in_cents": 175455000,
           "additional_license_legacy_price_in_cents": 27293000
         },
         "10": {
-          "price_in_cents": 389900000,
+          "price_in_cents": 350910000,
           "additional_license_legacy_price_in_cents": 25343500
         },
         "20": {
-          "price_in_cents": 779800000,
+          "price_in_cents": 701820000,
           "additional_license_legacy_price_in_cents": 23394000
         },
         "50": {
-          "price_in_cents": 1949500000,
+          "price_in_cents": 1754550000,
           "additional_license_legacy_price_in_cents": 21444500
         }
       },
       "DKK": {
         "2": {
-          "price_in_cents": 239800,
+          "price_in_cents": 215800,
           "additional_license_legacy_price_in_cents": 83900
         },
         "3": {
-          "price_in_cents": 359700,
+          "price_in_cents": 323700,
           "additional_license_legacy_price_in_cents": 83900
         },
         "4": {
-          "price_in_cents": 479600,
+          "price_in_cents": 431600,
           "additional_license_legacy_price_in_cents": 83900
         },
         "5": {
-          "price_in_cents": 599500,
+          "price_in_cents": 539500,
           "additional_license_legacy_price_in_cents": 83900
         },
         "10": {
-          "price_in_cents": 1199000,
+          "price_in_cents": 1079000,
           "additional_license_legacy_price_in_cents": 77900
         },
         "20": {
-          "price_in_cents": 2398000,
+          "price_in_cents": 2158000,
           "additional_license_legacy_price_in_cents": 71900
         },
         "50": {
-          "price_in_cents": 5995000,
+          "price_in_cents": 5395000,
           "additional_license_legacy_price_in_cents": 65900
         }
       },
       "EUR": {
         "2": {
-          "price_in_cents": 35800,
+          "price_in_cents": 32200,
           "additional_license_legacy_price_in_cents": 12500
         },
         "3": {
-          "price_in_cents": 53700,
+          "price_in_cents": 48300,
           "additional_license_legacy_price_in_cents": 12500
         },
         "4": {
-          "price_in_cents": 71600,
+          "price_in_cents": 64400,
           "additional_license_legacy_price_in_cents": 12500
         },
         "5": {
-          "price_in_cents": 89500,
+          "price_in_cents": 80500,
           "additional_license_legacy_price_in_cents": 12500
         },
         "10": {
-          "price_in_cents": 179000,
+          "price_in_cents": 161000,
           "additional_license_legacy_price_in_cents": 11600
         },
         "20": {
-          "price_in_cents": 358000,
+          "price_in_cents": 322000,
           "additional_license_legacy_price_in_cents": 10700
         },
         "50": {
-          "price_in_cents": 895000,
+          "price_in_cents": 805000,
           "additional_license_legacy_price_in_cents": 9800
         }
       },
       "GBP": {
         "2": {
-          "price_in_cents": 31800,
+          "price_in_cents": 28600,
           "additional_license_legacy_price_in_cents": 11100
         },
         "3": {
-          "price_in_cents": 47700,
+          "price_in_cents": 42900,
           "additional_license_legacy_price_in_cents": 11100
         },
         "4": {
-          "price_in_cents": 63600,
+          "price_in_cents": 57200,
           "additional_license_legacy_price_in_cents": 11100
         },
         "5": {
-          "price_in_cents": 79500,
+          "price_in_cents": 71500,
           "additional_license_legacy_price_in_cents": 11100
         },
         "10": {
-          "price_in_cents": 159000,
+          "price_in_cents": 143000,
           "additional_license_legacy_price_in_cents": 10300
         },
         "20": {
-          "price_in_cents": 318000,
+          "price_in_cents": 286000,
           "additional_license_legacy_price_in_cents": 9500
         },
         "50": {
-          "price_in_cents": 795000,
+          "price_in_cents": 715000,
           "additional_license_legacy_price_in_cents": 8700
         }
       },
       "INR": {
         "2": {
-          "price_in_cents": 919800,
+          "price_in_cents": 827800,
           "additional_license_legacy_price_in_cents": 321900
         },
         "3": {
-          "price_in_cents": 1379700,
+          "price_in_cents": 1241700,
           "additional_license_legacy_price_in_cents": 321900
         },
         "4": {
-          "price_in_cents": 1839600,
+          "price_in_cents": 1655600,
           "additional_license_legacy_price_in_cents": 321900
         },
         "5": {
-          "price_in_cents": 2299500,
+          "price_in_cents": 2069500,
           "additional_license_legacy_price_in_cents": 321900
         },
         "10": {
-          "price_in_cents": 4599000,
+          "price_in_cents": 4139000,
           "additional_license_legacy_price_in_cents": 298900
         },
         "20": {
-          "price_in_cents": 9198000,
+          "price_in_cents": 8278000,
           "additional_license_legacy_price_in_cents": 275900
         },
         "50": {
-          "price_in_cents": 22995000,
+          "price_in_cents": 20695000,
           "additional_license_legacy_price_in_cents": 252900
         }
       },
       "MXN": {
         "2": {
-          "price_in_cents": 579800,
+          "price_in_cents": 521800,
           "additional_license_legacy_price_in_cents": 202900
         },
         "3": {
-          "price_in_cents": 869700,
+          "price_in_cents": 782700,
           "additional_license_legacy_price_in_cents": 202900
         },
         "4": {
-          "price_in_cents": 1159600,
+          "price_in_cents": 1043600,
           "additional_license_legacy_price_in_cents": 202900
         },
         "5": {
-          "price_in_cents": 1449500,
+          "price_in_cents": 1304500,
           "additional_license_legacy_price_in_cents": 202900
         },
         "10": {
-          "price_in_cents": 2899000,
+          "price_in_cents": 2609000,
           "additional_license_legacy_price_in_cents": 188400
         },
         "20": {
-          "price_in_cents": 5798000,
+          "price_in_cents": 5218000,
           "additional_license_legacy_price_in_cents": 173900
         },
         "50": {
-          "price_in_cents": 14495000,
+          "price_in_cents": 13045000,
           "additional_license_legacy_price_in_cents": 159400
         }
       },
       "NOK": {
         "2": {
-          "price_in_cents": 289800,
+          "price_in_cents": 260800,
           "additional_license_legacy_price_in_cents": 101400
         },
         "3": {
-          "price_in_cents": 434700,
+          "price_in_cents": 391200,
           "additional_license_legacy_price_in_cents": 101400
         },
         "4": {
-          "price_in_cents": 579600,
+          "price_in_cents": 521600,
           "additional_license_legacy_price_in_cents": 101400
         },
         "5": {
-          "price_in_cents": 724500,
+          "price_in_cents": 652000,
           "additional_license_legacy_price_in_cents": 101400
         },
         "10": {
-          "price_in_cents": 1449000,
+          "price_in_cents": 1304000,
           "additional_license_legacy_price_in_cents": 94100
         },
         "20": {
-          "price_in_cents": 2898000,
+          "price_in_cents": 2608000,
           "additional_license_legacy_price_in_cents": 86900
         },
         "50": {
-          "price_in_cents": 7245000,
+          "price_in_cents": 6520000,
           "additional_license_legacy_price_in_cents": 79600
         }
       },
       "NZD": {
         "2": {
-          "price_in_cents": 47800,
+          "price_in_cents": 43000,
           "additional_license_legacy_price_in_cents": 16700
         },
         "3": {
-          "price_in_cents": 71700,
+          "price_in_cents": 64500,
           "additional_license_legacy_price_in_cents": 16700
         },
         "4": {
-          "price_in_cents": 95600,
+          "price_in_cents": 86000,
           "additional_license_legacy_price_in_cents": 16700
         },
         "5": {
-          "price_in_cents": 119500,
+          "price_in_cents": 107500,
           "additional_license_legacy_price_in_cents": 16700
         },
         "10": {
-          "price_in_cents": 239000,
+          "price_in_cents": 215000,
           "additional_license_legacy_price_in_cents": 15500
         },
         "20": {
-          "price_in_cents": 478000,
+          "price_in_cents": 430000,
           "additional_license_legacy_price_in_cents": 14300
         },
         "50": {
-          "price_in_cents": 1195000,
+          "price_in_cents": 1075000,
           "additional_license_legacy_price_in_cents": 13100
         }
       },
       "PEN": {
         "2": {
-          "price_in_cents": 91800,
+          "price_in_cents": 82600,
           "additional_license_legacy_price_in_cents": 32100
         },
         "3": {
-          "price_in_cents": 137700,
+          "price_in_cents": 123900,
           "additional_license_legacy_price_in_cents": 32100
         },
         "4": {
-          "price_in_cents": 183600,
+          "price_in_cents": 165200,
           "additional_license_legacy_price_in_cents": 32100
         },
         "5": {
-          "price_in_cents": 229500,
+          "price_in_cents": 206500,
           "additional_license_legacy_price_in_cents": 32100
         },
         "10": {
-          "price_in_cents": 459000,
+          "price_in_cents": 413000,
           "additional_license_legacy_price_in_cents": 29800
         },
         "20": {
-          "price_in_cents": 918000,
+          "price_in_cents": 826000,
           "additional_license_legacy_price_in_cents": 27500
         },
         "50": {
-          "price_in_cents": 2295000,
+          "price_in_cents": 2065000,
           "additional_license_legacy_price_in_cents": 25200
         }
       },
       "SEK": {
         "2": {
-          "price_in_cents": 289800,
+          "price_in_cents": 260800,
           "additional_license_legacy_price_in_cents": 101400
         },
         "3": {
-          "price_in_cents": 434700,
+          "price_in_cents": 391200,
           "additional_license_legacy_price_in_cents": 101400
         },
         "4": {
-          "price_in_cents": 579600,
+          "price_in_cents": 521600,
           "additional_license_legacy_price_in_cents": 101400
         },
         "5": {
-          "price_in_cents": 724500,
+          "price_in_cents": 652000,
           "additional_license_legacy_price_in_cents": 101400
         },
         "10": {
-          "price_in_cents": 1449000,
+          "price_in_cents": 1304000,
           "additional_license_legacy_price_in_cents": 94100
         },
         "20": {
-          "price_in_cents": 2898000,
+          "price_in_cents": 2608000,
           "additional_license_legacy_price_in_cents": 86900
         },
         "50": {
-          "price_in_cents": 7245000,
+          "price_in_cents": 6520000,
           "additional_license_legacy_price_in_cents": 79600
         }
       },
       "SGD": {
         "2": {
-          "price_in_cents": 51800,
+          "price_in_cents": 46600,
           "additional_license_legacy_price_in_cents": 18100
         },
         "3": {
-          "price_in_cents": 77700,
+          "price_in_cents": 69900,
           "additional_license_legacy_price_in_cents": 18100
         },
         "4": {
-          "price_in_cents": 103600,
+          "price_in_cents": 93200,
           "additional_license_legacy_price_in_cents": 18100
         },
         "5": {
-          "price_in_cents": 129500,
+          "price_in_cents": 116500,
           "additional_license_legacy_price_in_cents": 18100
         },
         "10": {
-          "price_in_cents": 259000,
+          "price_in_cents": 233000,
           "additional_license_legacy_price_in_cents": 16800
         },
         "20": {
-          "price_in_cents": 518000,
+          "price_in_cents": 466000,
           "additional_license_legacy_price_in_cents": 15500
         },
         "50": {
-          "price_in_cents": 1295000,
+          "price_in_cents": 1165000,
           "additional_license_legacy_price_in_cents": 14200
         }
       },
       "USD": {
         "2": {
-          "price_in_cents": 39800,
+          "price_in_cents": 35800,
           "additional_license_legacy_price_in_cents": 13900
         },
         "3": {
-          "price_in_cents": 59700,
+          "price_in_cents": 53700,
           "additional_license_legacy_price_in_cents": 13900
         },
         "4": {
-          "price_in_cents": 79600,
+          "price_in_cents": 71600,
           "additional_license_legacy_price_in_cents": 13900
         },
         "5": {
-          "price_in_cents": 99500,
+          "price_in_cents": 89500,
           "additional_license_legacy_price_in_cents": 13900
         },
         "10": {
-          "price_in_cents": 199000,
+          "price_in_cents": 179000,
           "additional_license_legacy_price_in_cents": 12900
         },
         "20": {
-          "price_in_cents": 398000,
+          "price_in_cents": 358000,
           "additional_license_legacy_price_in_cents": 11900
         },
         "50": {
-          "price_in_cents": 995000,
+          "price_in_cents": 895000,
           "additional_license_legacy_price_in_cents": 10900
         }
       }

+ 1 - 0
services/web/app/views/subscriptions/dashboard-react.pug

@@ -23,6 +23,7 @@ block append meta
 	meta(name="ol-plans", data-type="json" content=plans)
 	meta(name="ol-groupSettingsAdvertisedFor", data-type="json" content=groupSettingsAdvertisedFor)
 	meta(name="ol-canUseFlexibleLicensing", data-type="boolean", content=canUseFlexibleLicensing)
+	meta(name="ol-showGroupDiscount", data-type="boolean", content=showGroupDiscount)
 	meta(name="ol-groupSettingsEnabledFor", data-type="json" content=groupSettingsEnabledFor)
 	meta(name="ol-user" data-type="json" content=user)
 	if (personalSubscription && personalSubscription.recurly)

+ 2 - 3
services/web/frontend/extracted-translations.json

@@ -137,6 +137,7 @@
   "anyone_with_link_can_view": "",
   "app_on_x": "",
   "appearance": "",
+  "apply_educational_discount_description_with_group_discount": "",
   "apply_suggestion": "",
   "archive": "",
   "archive_projects": "",
@@ -199,8 +200,6 @@
   "cancel": "",
   "cancel_add_on": "",
   "cancel_anytime": "",
-  "cancel_group_price_warning": "",
-  "cancel_group_price_warning_heading": "",
   "cancel_my_account": "",
   "cancel_my_subscription": "",
   "cancel_personal_subscription_first": "",
@@ -892,7 +891,6 @@
   "let_us_know_what_you_think": "",
   "lets_get_those_premium_features": "",
   "library": "",
-  "license_for_educational_purposes_confirmation": "",
   "limited_document_history": "",
   "limited_offer": "",
   "limited_to_n_editors": "",
@@ -1417,6 +1415,7 @@
   "save_or_cancel-cancel": "",
   "save_or_cancel-or": "",
   "save_or_cancel-save": "",
+  "save_x_or_more": "",
   "saving": "",
   "saving_notification_with_seconds": "",
   "search": "",

+ 0 - 21
services/web/frontend/js/features/subscription/components/dashboard/states/active/cancel-plan/cancel-subscription.tsx

@@ -15,8 +15,6 @@ import ExtendTrialButton from './extend-trial-button'
 import { useLocation } from '../../../../../../../shared/hooks/use-location'
 import { debugConsole } from '@/utils/debugging'
 import OLButton from '@/features/ui/components/ol/ol-button'
-import moment from 'moment'
-import OLNotification from '@/features/ui/components/ol/ol-notification'
 
 const planCodeToDowngradeTo = 'paid-personal'
 
@@ -172,12 +170,6 @@ export function CancelSubscription() {
     return <LoadingSpinner />
   }
 
-  const startDate = moment.utc(personalSubscription.recurly.account.created_at)
-  const pricingChangeEffectiveDate = moment.utc('2025-01-08T12:00:00Z')
-  const displayPricingWarning =
-    personalSubscription.plan.groupPlan &&
-    startDate.isBefore(pricingChangeEffectiveDate)
-
   async function handleCancelSubscription() {
     try {
       await runAsyncCancel(postJSON(cancelSubscriptionUrl))
@@ -191,19 +183,6 @@ export function CancelSubscription() {
 
   return (
     <>
-      {displayPricingWarning && (
-        <OLNotification
-          type="warning"
-          content={
-            <>
-              <h2 className="pricing-warning-heading">
-                {t('cancel_group_price_warning_heading')}
-              </h2>
-              <p>{t('cancel_group_price_warning')}</p>
-            </>
-          }
-        />
-      )}
       <div className="text-center">
         <p>
           <strong>{t('wed_love_you_to_stay')}</strong>

+ 9 - 14
services/web/frontend/js/features/subscription/components/dashboard/states/active/change-plan/modals/change-to-group-modal.tsx

@@ -118,6 +118,7 @@ export function ChangeToGroupModal() {
   const { modal: contactModal, showModal: showContactModal } =
     useContactUsModal({ autofillProjectUrl: false })
   const groupPlans = getMeta('ol-groupPlans')
+  const showGroupDiscount = getMeta('ol-showGroupDiscount')
   const personalSubscription = getMeta('ol-subscription') as RecurlySubscription
   const [error, setError] = useState(false)
   const [inflight, setInflight] = useState(false)
@@ -172,6 +173,11 @@ export function ChangeToGroupModal() {
         <OLModalHeader closeButton>
           <OLModalTitle className="lh-sm">
             {t('customize_your_group_subscription')}
+            {showGroupDiscount && (
+              <p className="group-subscription-modal-title-discount">
+                {t('save_x_or_more', { percentage: '10%' })}
+              </p>
+            )}
           </OLModalTitle>
         </OLModalHeader>
 
@@ -259,20 +265,9 @@ export function ChangeToGroupModal() {
                         setGroupPlanToChangeToUsage('enterprise')
                       }
                     }}
-                    label={
-                      <Trans
-                        i18nKey="license_for_educational_purposes_confirmation"
-                        values={{ percent: educationalPercentDiscount }}
-                        shouldUnescape
-                        tOptions={{ interpolation: { escapeValue: true } }}
-                        components={[
-                          /* eslint-disable-next-line react/jsx-key */
-                          <strong />,
-                          /* eslint-disable-next-line react/jsx-key */
-                          <br />,
-                        ]}
-                      />
-                    }
+                    label={t(
+                      'apply_educational_discount_description_with_group_discount'
+                    )}
                   />
                 </form>
               </div>

+ 1 - 0
services/web/frontend/js/utils/meta.ts

@@ -194,6 +194,7 @@ export interface Meta {
   'ol-showAiErrorAssistant': boolean
   'ol-showBrlGeoBanner': boolean
   'ol-showCouponField': boolean
+  'ol-showGroupDiscount': boolean
   'ol-showGroupsAndEnterpriseBanner': boolean
   'ol-showInrGeoBanner': boolean
   'ol-showLATAMBanner': boolean

+ 16 - 0
services/web/frontend/stylesheets/app/plans.less

@@ -165,6 +165,22 @@
           outline: 0;
         }
 
+        .group-discount-bubble {
+          padding: var(--spacing-01) var(--spacing-04);
+          background-color: var(--green-10);
+          color: var(--green-50);
+          border-radius: var(--border-radius-full-new);
+          font-family: 'DM Mono', monospace;
+          font-feature-settings: 'ss05';
+          font-size: var(--font-size-01);
+          line-height: var(--line-height-01);
+          font-weight: 500;
+
+          @media (max-width: @screen-xs-max) {
+            display: none;
+          }
+        }
+
         @media (max-width: @screen-xs-max) {
           font-size: var(--font-size-02);
           line-height: var(--line-height-02);

+ 7 - 0
services/web/frontend/stylesheets/bootstrap-5/pages/subscription.scss

@@ -37,6 +37,13 @@
  *  MODALS
  */
 
+.group-subscription-modal-title-discount {
+  @include body-base;
+
+  margin-top: var(--spacing-02);
+  margin-bottom: unset;
+}
+
 .group-subscription-modal {
   .circle {
     font-size: var(--font-size-06);

+ 2 - 3
services/web/locales/en.json

@@ -169,6 +169,7 @@
   "appearance": "Appearance",
   "apply_educational_discount": "Apply educational discount",
   "apply_educational_discount_description": "40% discount for groups using __appName__ for teaching",
+  "apply_educational_discount_description_with_group_discount": "Get a total of 40% off for groups using __appName__ for teaching",
   "apply_suggestion": "Apply suggestion",
   "april": "April",
   "archive": "Archive",
@@ -260,8 +261,6 @@
   "cancel": "Cancel",
   "cancel_add_on": "Cancel add-on",
   "cancel_anytime": "We’re confident that you’ll love __appName__, but if not you can cancel anytime. We’ll give you your money back, no questions asked, if you let us know within 30 days.",
-  "cancel_group_price_warning": "Our per-user prices are increasing in 2025. Keep your current rate for existing and new users by staying with us.",
-  "cancel_group_price_warning_heading": "Don’t lose your current pricing",
   "cancel_my_account": "Cancel my subscription",
   "cancel_my_subscription": "Cancel my subscription",
   "cancel_personal_subscription_first": "You already have an individual subscription, would you like us to cancel this first before joining the group licence?",
@@ -1173,7 +1172,6 @@
   "libraries": "Libraries",
   "library": "Library",
   "license": "License",
-  "license_for_educational_purposes_confirmation": "<0>__percent__% educational discount</0><1/>I confirm this subscription is for educational purposes (applies to students or faculty using __appName__ for teaching)",
   "limited_document_history": "Limited document history",
   "limited_to_n_editors": "Limited to __count__ editor",
   "limited_to_n_editors_per_project": "Limited to __count__ editor per project",
@@ -1876,6 +1874,7 @@
   "save_or_cancel-cancel": "Cancel",
   "save_or_cancel-or": "or",
   "save_or_cancel-save": "Save",
+  "save_x_or_more": "Save __percentage__ or more",
   "saving": "Saving",
   "saving_notification_with_seconds": "Saving __docname__... (__seconds__ seconds of unsaved changes)",
   "search": "Search",

+ 4 - 5
services/web/test/frontend/features/subscription/components/dashboard/states/active/change-plan/change-plan.test.tsx

@@ -322,7 +322,7 @@ describe('<ChangePlanModal />', function () {
     const standardPlanCollaboratorText = '10 collaborators per project'
     const professionalPlanCollaboratorText = 'Unlimited collaborators'
     const educationInputLabel =
-      '40% educational discountI confirm this subscription is for educational purposes (applies to students or faculty using Overleaf for teaching)'
+      'Get a total of 40% off for groups using Overleaf for teaching'
 
     let modal: HTMLElement
     async function openModal() {
@@ -368,15 +368,14 @@ describe('<ChangePlanModal />', function () {
       expect(sizeSelect.value).to.equal('10')
       const sizeOption = within(sizeSelect).getAllByRole('option')
       expect(sizeOption.length).to.equal(groupPlans.sizes.length)
-      within(modal).getByText('40% educational discount')
+      within(modal).getByText(
+        'Get a total of 40% off for groups using Overleaf for teaching'
+      )
 
       const educationalCheckbox = within(modal).getByRole(
         'checkbox'
       ) as HTMLInputElement
       expect(educationalCheckbox.checked).to.be.false
-      within(modal).getByText(
-        'I confirm this subscription is for educational purposes (applies to students or faculty using Overleaf for teaching)'
-      )
 
       within(modal).getByText(
         'Your new subscription will be billed immediately to your current payment method.'