* Fix: Invoices collected array length comparison
Update the code with the correct condition to respect the intent of the previous implementation ("exit with non zero code when no invoicess were processed").
See https://github.com/overleaf/internal/commit/5476f39984f9cbb6edaeec3bef35e9e5207c5823
However, I'm not sure if erroring when no invoices are collected is actually what we want to do.
* Wrap `collect_paypal_past_due_invoice` script and export the function
* Fixup typo `accoutns`
* Log invoices collection data before throwing
* Add note: `handleAPIError` is silencing the errors
* Create a test on `collect_paypal_past_due_invoice`
* Replace `console.log` by `@overleaf/logger` (bunyan)
Our `console.warn` show up as Errors (in red) in GCP. For example the following is an error in GCP:
```
Errors in attemptInvoiceCollection with id=2693634 OError: Recurly API returned with status code: 400
```
https://github.com/overleaf/internal/blob/5476f39/services/web/scripts/recurly/collect_paypal_past_due_invoice.js#L9
---
Does it correctly set the levels as warnings if we use `@overleaf/logger`
GitOrigin-RevId: 37c8bdf4afd8cef4706700aafb44480ec8966a74
* Revert "Merge pull request #14143 from overleaf/jlm-unsampled-compiles"
This reverts commit 2457977d61756be52db506d7c84531b22a26abe0, reversing
changes made to 3c452b3943c453707aac90d38e7b5b2ea9df0df4.
* Re-add export of `getPercentile` in SplitTestHandler.js
Was previously removed in https://github.com/overleaf/internal/commit/aa8c0aadec90b23ead60a4baeb33d6c3c6a2e536
GitOrigin-RevId: 42c48829e7246a6bdb9dbb2d075638c1eafdf2f0
* Handle error cause by `currencyDisplay: 'narrowSymbol'` in old browsers
RangeError
Value narrowSymbol out of range for Number.prototype.toLocaleString options property currencyDisplay
* Make `formatCurrencyLocalized` bulletproof
GitOrigin-RevId: 26e8abc6f9fb7c06c2d14b9d86af2d84fb9f32e3
Revert "Revert "[web] Store anonymous users split test assignments in new format in session""
GitOrigin-RevId: bd48a21c17df91eda1536378d8d999a1933e83a2
* Add a unit test on `SubscriptionFormatters.formatPrice`
* Add JSDoc to `formatPrice`
Also: Name the functions before exporting:
This fixes my IDE (WebStorm) navigation
* Make `'USD'` the default param instead of reassigning
* Create `formatCurrency` function
* Use `formatCurrency` in SubscriptionFormatters
* Use an `isNoCentsCurrency` logic for `CLP` `JPY` `KRW` `VND`
And remove custom `CLP` logic and locale
* Add `locale` param to `formatPrice`
* Generate `groups.json` and `localizedPlanPricing.json`
```
bin/exec web node ./scripts/recurly/recurly_prices.js --download -o prices.json
bin/exec web node ./scripts/plan-prices/plans.js -f ../../prices.json -o dir
```
* Update scripts/plan-prices/plans.js to generate numbers instead of localized amounts
* Generate `groups.json` and `localizedPlanPricing.json`
```
bin/exec web node ./scripts/recurly/recurly_prices.js --download -o prices.json
bin/exec web node ./scripts/plan-prices/plans.js -f ../../prices.json -o dir
```
* Remove generation of `plans.json`
As /services/web/frontend/js/main/plans.js was removed in https://github.com/overleaf/internal/pull/12593
* Sort currencies in alphabetical order in scripts/plan-prices/plans.js
* Generate `groups.json` and `localizedPlanPricing.json`
```
bin/exec web node ./scripts/recurly/recurly_prices.js --download -o prices.json
bin/exec web node ./scripts/plan-prices/plans.js -f ../../prices.json -o dir
```
* Use `formatCurrency` in price-summary.tsx
* Use `formatCurrency` in Subscription Pug files
* Fix unit tests SubscriptionHelperTests.js
* Remove unused `currencySymbol`
* Change to `formatCurrency` in other React components
* Add `CurrencyCode` JSDoc types
* Duplicate `formatCurrency` into services/web/app/src/util
* Wrap tests in a top-level describe block
* Use `narrowSymbol`
* Fix tests with `narrowSymbol` expects
* Revert deletion of old `formatPrice` in SubscriptionFormatters.js
* Rename `formatCurrency` -> `formatCurrencyLocalized`
* Revert deletion of `CurrencySymbol`
* Add split-test in SubscriptionController.js
* Add split-test in SubscriptionViewModelBuilder.js
* Add split-test in plans
* Add split-test in subscription-dashboard-context.tsx
* Add split-test in 4 more components
* Update tests
* Show currency and payment methods in interstitial page
* Fix `–` being printed. Use `–` instead
* Fix test with NOK
* Storybook: Fix missing `SplitTestProvider`
* Storybook: Revert "Remove unused `currencySymbol`"
This reverts commit e55387d4753f97bbf8e39e0fdc3ad17312122aaa.
* Replace `getSplitTestVariant` by `useSplitTestContext`
* Use parameterize currencyFormat in `generateInitialLocalizedGroupPrice`
* Fixup import paths of `formatCurrencyLocalized`
* Replace `% 1 === 0` by `Number.isInteger`
* Add comment explaining that any combinations of languages/currencies could happen
* Fixup after rebase: import `useSplitTestContext`
* Revert "Remove SplitTestProvider from subscription root"
This reverts commit be9f378fda715b86589ab0759737581c72321d87.
* Revert "Remove split test provider from some tests"
This reverts commit 985522932b550cfd38fa6a4f4c3d2ebaee6ff7df.
GitOrigin-RevId: 59a83cbbe0f7cc7e45f189c654e23fcf9bfa37af