Commit graph

33 commits

Author SHA1 Message Date
Antoine Clausse
ebec84540f Add waitForDb in scripts/resync_subscriptions.js (#19154)
GitOrigin-RevId: 608bce2654d2b6dbeb662ad0da8bb5c5ce3d68f3
2024-06-28 08:04:29 +00:00
Antoine Clausse
01188589f8 Add some JSDoc types to @overleaf/logger (#19153)
* Add some JSDoc types to `@overleaf/logger`

* Update `logger.error` calls

* Fixup `logger.err` JSDoc

* Update `logger.err` calls

* Fix `args` type

* Remove "Error message" description

* Replace `arguments` by actual arguments of the method

* Fix: "ESLint: Unnecessary '.apply()'.(no-useless-call)"

* Add JSDoc params to `debug` `info` `warn`

* Remove extra `args` param in JSDoc so developers aren't invited to use it

Not sure if this is the best thing to do because it creates a warning in the IDE: "Parameter args is not described in JSDoc"

* Add comment about serialization of `err` `req` `res`

* Allow strings as first param in `debug` `info` `warn`

* Fix syntax for optional parameters in JSDoc

* Add 2 signatures, to avoid "string, string" params

* Fix `@signature` names copy-pastes

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Revert the double `@param attributes`. It doesn't work

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 086dee8bbf30d577c5e1f844a9df5e518c46aca7
2024-06-28 08:04:25 +00:00
Antoine Clausse
de959fb7b9 Fix institution metrics sendAll cron (#19127)
* Don't send status 200 in the beginning: we may throw later

This was causing `Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client`
https://cloudlogging.app.goo.gl/Bchegw2iCYLxhPNk8

* Continue when failing to send one email, but log the error

* Revert "Don't send status 200...", log error instead

This reverts commit 3e13559704f822e330a18a68567f46491649f222.

* Fix `logger.error` params

* Fixup: good syntax for `logger.error`

* Remove useless `OError` import

* Update services/web/modules/metrics/app/src/MetricsEmailController.js

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Update services/web/modules/metrics/app/src/MetricsEmailController.js

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Update services/web/modules/metrics/app/src/MetricsEmailController.js

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Update services/web/scripts/recurly/collect_paypal_past_due_invoice.js

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: c68bc677326729fc6c39b7c2f027e35ebb776bd2
2024-06-26 08:05:11 +00:00
Jimmy Domagala-Tang
50b19c7793 Merge pull request #18850 from overleaf/ac-promisify-resync-subscriptions
Promisify resync_subscriptions

GitOrigin-RevId: c23a99683a22104815525b179d4e46d3ad568f94
2024-06-26 08:04:57 +00:00
Antoine Clausse
262a92083a Don't throw cron job when some PayPal collection fails (#18795)
* Don't throw cron job when some PayPal collection fails

Follow-up of https://github.com/overleaf/internal/pull/18414 and https://github.com/overleaf/internal/pull/18572

This was causing `Heartbeat [cron-web-collect-paypal-prod] is expired.`
And the cron to rerun (altogether three times a day, instead of once a day)

https://cloudlogging.app.goo.gl/W4qBPFDeTUkRQ8J27

* Update tests

GitOrigin-RevId: a6a29cc84c0c72fd86b2e3a9739669d3a5fb0be5
2024-06-11 08:04:04 +00:00
Antoine Clausse
01e1286a8b In PayPal collect invoices script: Update throw unsuccessful invoices collections (#18572)
* Remove throw on `INVOICES_COLLECTED_SUCCESS.length === 0`

Effectively reverts 038377b511

See: https://digital-science.slack.com/archives/C20TZCMMF/p1716973110408049

* Update tests so they don't expect rejections

* Reject when some invoice collection failed

GitOrigin-RevId: aa37f7fa37c96b8624e87d94be675d115e3250a9
2024-05-30 08:04:31 +00:00
Antoine Clausse
554be73a36 In collect_paypal_past_due_invoice.js, iterate over each page instead of gathering data from all pages at first (#18414)
* Create `getPaginatedEndpointIterator` to iterate each page

* Create `waitMs` util, it will replace `slowCallback`

* Make `handleAPIError` async

* Make `isAccountUsingPaypal` async

* Make `attemptInvoiceCollection` async

* Make `attemptInvoicesCollection` async

* Use `await` instead of `new Promise`

* Remove unused callbackified `attemptInvoiceCollection`

* Run `attemptInvoiceCollection` for each page instead of gathering all pages in the beginning

* Add test on fetching multiple pages of invoice

GitOrigin-RevId: 2674b18c6ca5732b873fb2bc71b515909006f93d
2024-05-27 10:23:18 +00:00
Antoine Clausse
78a0bc2b05 [web] Convert RecurlyWrapper functions to async (#18384)
* Rename `RecurlyWrapper` to `promises`, as it will only contain the promises soon

* Update `apiRequest`

* Update `_parseXml`

* Update `_parseXmlAndGetAttribute`

* Update `_parse*Xml`

* Update `updateAccountEmailAddress`

* Update `checkAccountExists`

* Update `createAccount`

* Update `createBillingInfo`

* Update `setAddressAndCompanyBillingInfo`

* Update `createSubscription`

* Update `_createPaypalSubscription`

* Update `_handle422Response`

* Update `_createCreditCardSubscription`

* Update `createSubscription`

* Update `getSubscriptions`

* Update `getSubscription`

* Update `getPaginatedEndpoint`

* Update `getAccount`

* Update `getAccountActiveCoupons`

* Update `getCoupon`

* Update `getBillingInfo`

* Update `getAccountPastDueInvoices`

* Update `attemptInvoiceCollection`

* Update `updateSubscription`

* Update `createFixedAmmountCoupon`

* Update `lookupCoupon`

* Update `redeemCoupon`

* Update `extendTrial`

* Update `listAccountActiveSubscriptions`

* To find which functions to add as callbackified, I used this Regex:
`RecurlyWrapper\.(?!promises)[^.\s]*`

And after adding callbackified functions, we're left with no results with the Regex:
`RecurlyWrapper\.(?!promises|apiUrl|_buildXml|_parseXml|attemptInvoiceCollection|createFixedAmmountCoupon|getAccountActiveCoupons|getBillingInfo|getPaginatedEndpoint|getSubscription|updateAccountEmailAddress)[^.\s]*`

* Update unit tests

* Test `getSubscription` both as "promise" and as "callback"

I'm not sure if we want to generalize this.

* Fix: add missing `await`s (!!)

* Change `apiRequest` to reject errors instead of resolving it in an object

* Fixup for CollectPayPalPastDueInvoice test

* Fix: callbackify `getSubscriptions` (!!)

* Replace `.then(...)` chain by multiple `await`

* Fixup `attemptInvoicesCollection`: prevent reading length of undefined

* Use `return await` when returning promises

Per https://github.com/overleaf/internal/pull/18384#pullrequestreview-2065738771

GitOrigin-RevId: ceda755b24fd29f97a27e60ac5db9bc7e369f932
2024-05-27 10:21:26 +00:00
Antoine Clausse
9419cc3b37 [web] Add tests to collect_paypal_past_due_invoice.js + update logging (#18310)
* 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 5476f39984

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
2024-05-15 08:04:46 +00:00
Tim Down
800c9d63b4 Merge pull request #14048 from overleaf/mj-recurly-script-update
[web] recurly resync script update

GitOrigin-RevId: 798cb73f46b763f6ece6b12d63fe82fbcc6c2920
2023-07-28 08:04:14 +00:00
Brian Gough
c3ad6645fe Merge pull request #12816 from overleaf/bg-recurly-scripts-cleanup
sort recurly script JSON outputs for consistency

GitOrigin-RevId: e5dc789fd834e9864912e3ef14ac3e6bf8eb7d99
2023-04-27 08:05:52 +00:00
Brian Gough
72abda9f29 Merge pull request #12757 from overleaf/bg-clean-up-recurly-prices-script
clean up recurly prices script

GitOrigin-RevId: b9afa05a0931bb11fd9be2d9a92a6d4beaab2f7d
2023-04-25 08:06:05 +00:00
Brian Gough
253f44894a Merge pull request #12748 from overleaf/bg-recurly-add-currency
add script for generating recurly prices

GitOrigin-RevId: c7a624af35eba9882798fbaf750e4328604f47fa
2023-04-25 08:05:57 +00:00
Eric Mc Sween
deb7d82e68 Merge pull request #11435 from overleaf/em-price-increase-script
Script to increase prices for existing customers

GitOrigin-RevId: 8b5357b05a9f09f2ed1b2b52f5dff8d296d06bf3
2023-01-26 09:04:21 +00:00
Brian Gough
20cd6a6dc1 Merge pull request #10921 from overleaf/bg-fix-script-name
fix script name in comments of recurly_prices.js

GitOrigin-RevId: 4a547018ba538af91abd28a5e72c7da7cdc28d45
2022-12-21 09:05:12 +00:00
Eric Mc Sween
8be8dd4cc0 Merge pull request #10402 from overleaf/bg-sync-plan-prices-to-recurly
script to sync prices to recurly

GitOrigin-RevId: c6659f749136a9aeb2f90631470e144e9d1180a8
2022-11-15 09:06:11 +00:00
Tim Alby
bbac46156b convert price_in_unit to price_in_cents
GitOrigin-RevId: bae030e9c90f8286d6e6550744849984fe81f63d
2022-01-21 09:03:29 +00:00
Tim Alby
3e70546e18 rename price attributes to price_in_cents or price_in_unit
GitOrigin-RevId: 8045472c96862078583fcb522099ad78926281dc
2022-01-21 09:03:23 +00:00
Thomas
5e61fce3b4 Enable additional currencies when purchasing (or upgrading to) a group plan (#4884)
* Add script to fetch group data pricing from Recurly

* Update groups pricing data using script to fetch prices from Recurly

* Add additional currencies to saas settings

* Refactor group plans upgrade modal to use shared options from settings

GitOrigin-RevId: 6d13d5b152d01e0399f9d2b8f6f8bf99784589e8
2022-01-12 09:03:21 +00:00
Alexandre Bourdin
40c7f2dae1 Merge pull request #4219 from overleaf/ab-group-subscription-user-property
Send group subscription user property

GitOrigin-RevId: d1033ab4e0b5061b9d4a781e319d6b690f7e6154
2021-07-06 02:05:54 +00:00
Eric Mc Sween
e6b805b885 Merge pull request #4242 from overleaf/ho-paypal-script-exit-code
exit with non zero code when no invoicess were processed

GitOrigin-RevId: df449964fc830f689d972d9ad3ed6b352c1b7c5c
2021-07-03 02:09:17 +00:00
Alf Eaton
1be43911b4 Merge pull request #3942 from overleaf/prettier-trailing-comma
Set Prettier's "trailingComma" setting to "es5"

GitOrigin-RevId: 9f14150511929a855b27467ad17be6ab262fe5d5
2021-04-28 02:10:01 +00:00
Alf Eaton
1ebc8a79cb Merge pull request #3495 from overleaf/ae-prettier-2
Upgrade Prettier to v2

GitOrigin-RevId: 85aa3fa1acb6332c4f58c46165a43d1a51471f33
2021-04-15 02:05:22 +00:00
Alasdair Smith
7cbf2cdd9e Merge pull request #3496 from overleaf/ae-eslint-dot-notation
Enable the eslint dot-notation rule

GitOrigin-RevId: e11cbad3e8a77a4a60590d3674fbf34feccc5bc9
2020-12-17 03:07:31 +00:00
Alf Eaton
2ff1cf43d6 Merge pull request #3470 from overleaf/eslint
Upgrade and configure ESLint

GitOrigin-RevId: ad5aeaf85e72c847a125ff3a9db99a12855e38aa
2020-12-16 03:08:28 +00:00
Eric Mc Sween
d772dbaceb Merge pull request #2673 from overleaf/ta-resync-subscriptions-fix
Resync Recurly Subscriptions Script Improvements

GitOrigin-RevId: b042465b7bffcbb73b40d1a7f23de784185d53ef
2020-03-17 04:18:03 +00:00
Timothée Alby
50ccc90815 Merge pull request #2664 from overleaf/ta-resync-subscriptions
Add Script To Resync Recurly Subscriptions

GitOrigin-RevId: 95f1263e5b3b782ec70d3d135f3c1866548a048f
2020-03-12 04:18:56 +00:00
Timothée Alby
508556c835 Merge pull request #2409 from overleaf/ta-recurly-collection-script-fix
Recurly Collection Script Fix

GitOrigin-RevId: 3012d06a9122636ca1997e2e66899a36b386e5be
2019-11-27 13:21:27 +00:00
Timothée Alby
e000fd4615 Merge pull request #2343 from overleaf/ta-invoice-attempt-callback
Collect Past Due Invoices on Paypal Billing Info Updates

GitOrigin-RevId: 6a0d298db8589ae6ba7cb62e4dfd562a1f292db0
2019-11-12 09:14:58 +00:00
Timothée Alby
480ca112ff Merge pull request #2277 from overleaf/ta-recurly-script-rate-limit
Recurly Script Rate Limit

GitOrigin-RevId: 726580a821daf3b3dc9c49f6739b79ddcae451b8
2019-10-22 12:07:10 +00:00
Timothée Alby
de4205d6a0 Merge pull request #2273 from overleaf/ta-recurly-get-accounts
Add Script to Print CSV of all Paypal Customers

GitOrigin-RevId: 3aab5a29508a6848934a2858e0ce0edb9c7d6e71
2019-10-21 14:08:03 +00:00
James Allen
6cd35d66d5 Set tax type to digital in Recurly plans script
GitOrigin-RevId: 3f30aadc1dd27a7b7e37ca096404a9d12a68d29e
2018-11-13 15:02:30 +00:00
James Allen
140f97eb20 Merge pull request #1107 from sharelatex/ja-purchase-groups
Purchase group/team accounts directly via app

GitOrigin-RevId: 1a502878753de77758fb431f45a6366f199f1cb0
2018-11-13 13:50:46 +00:00