@stamhoofd/backend 2.111.0 → 2.113.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/LICENSE.md +32 -0
  2. package/package.json +14 -11
  3. package/src/boot.ts +1 -0
  4. package/src/email-recipient-loaders/documents.ts +66 -0
  5. package/src/endpoints/global/members/PatchOrganizationMembersEndpoint.test.ts +701 -4
  6. package/src/endpoints/global/members/PatchOrganizationMembersEndpoint.ts +21 -10
  7. package/src/endpoints/global/registration/PatchUserMembersEndpoint.test.ts +661 -4
  8. package/src/endpoints/global/registration/PatchUserMembersEndpoint.ts +17 -6
  9. package/src/endpoints/global/registration/RegisterMembersEndpoint.test.ts +291 -8
  10. package/src/endpoints/global/registration/RegisterMembersEndpoint.ts +24 -0
  11. package/src/endpoints/organization/dashboard/invoices/GetInvoicesCountEndpoint.ts +43 -0
  12. package/src/endpoints/organization/dashboard/invoices/GetInvoicesEndpoint.ts +219 -0
  13. package/src/endpoints/organization/dashboard/payments/PatchBalanceItemsEndpoint.ts +2 -2
  14. package/src/endpoints/organization/dashboard/payments/PatchPaymentsEndpoint.ts +73 -7
  15. package/src/endpoints/organization/dashboard/webshops/PatchWebshopOrdersEndpoint.ts +6 -4
  16. package/src/endpoints/organization/shared/GetUitpasNumberDetailsEndpoint.ts +72 -0
  17. package/src/endpoints/organization/webshops/PlaceOrderEndpoint.ts +10 -7
  18. package/src/endpoints/organization/webshops/RetrieveUitpasSocialTariffPriceEndpoint.ts +3 -2
  19. package/src/excel-loaders/members.ts +28 -28
  20. package/src/helpers/AdminPermissionChecker.ts +35 -11
  21. package/src/helpers/AuthenticatedStructures.ts +92 -66
  22. package/src/helpers/Context.ts +1 -1
  23. package/src/helpers/StripeHelper.ts +11 -1
  24. package/src/helpers/StripePayoutChecker.ts +7 -0
  25. package/src/helpers/UitpasTokenRepository.ts +13 -6
  26. package/src/helpers/passthroughFetch.ts +24 -0
  27. package/src/helpers/updateMemberDetailsUitpasNumber.ts +149 -0
  28. package/src/seeds/1769088653-uitpas-status.ts +127 -0
  29. package/src/seeds/data/default-email-templates.sql +2 -1
  30. package/src/services/InvoiceService.ts +2 -2
  31. package/src/services/PaymentService.ts +2 -3
  32. package/src/services/uitpas/PassholderEndpoints.ts +190 -0
  33. package/src/services/uitpas/UitpasService.ts +37 -12
  34. package/src/services/uitpas/checkUitpasNumbers.ts +16 -140
  35. package/src/services/uitpas/handleUitpasResponse.ts +89 -0
  36. package/src/sql-filters/invoiced-balance-items.ts +20 -0
  37. package/src/sql-filters/invoices.ts +122 -0
  38. package/src/sql-filters/payments.ts +11 -1
  39. package/src/sql-sorters/invoices.ts +83 -0
  40. package/src/sql-sorters/payments.ts +33 -0
  41. package/src/sql-sorters/registrations.ts +5 -1
  42. package/tests/e2e/bundle-discounts.test.ts +8 -8
  43. package/tests/e2e/tests-disable-net-connect.test.ts +5 -0
  44. package/tests/helpers/StripeMocker.ts +5 -5
  45. package/tests/helpers/UitpasApiMocker.ts +175 -0
  46. package/tests/helpers/index.ts +1 -0
  47. package/tests/helpers/resetNock.ts +7 -0
  48. package/tests/init/index.ts +1 -0
  49. package/tests/init/initPayconiq.ts +2 -2
  50. package/tests/init/initStripe.ts +1 -1
  51. package/tests/init/initUitpasApi.ts +14 -0
  52. package/tests/jest.global.setup.ts +6 -4
  53. package/tests/jest.setup.ts +12 -6
  54. package/LICENSE +0 -665
@@ -9,15 +9,16 @@ import { Formatter } from '@stamhoofd/utility';
9
9
  import { Email } from '@stamhoofd/email';
10
10
  import { QueueHandler } from '@stamhoofd/queues';
11
11
  import { SQL, SQLWhereSign } from '@stamhoofd/sql';
12
- import { AuthenticatedStructures } from '../../../helpers/AuthenticatedStructures';
13
- import { Context } from '../../../helpers/Context';
14
- import { MembershipCharger } from '../../../helpers/MembershipCharger';
15
- import { MemberUserSyncer } from '../../../helpers/MemberUserSyncer';
16
- import { SetupStepUpdater } from '../../../helpers/SetupStepUpdater';
17
- import { MemberNumberService } from '../../../services/MemberNumberService';
18
- import { PlatformMembershipService } from '../../../services/PlatformMembershipService';
19
- import { RegistrationService } from '../../../services/RegistrationService';
20
- import { shouldCheckIfMemberIsDuplicateForPatch } from './shouldCheckIfMemberIsDuplicate';
12
+ import { AuthenticatedStructures } from '../../../helpers/AuthenticatedStructures.js';
13
+ import { Context } from '../../../helpers/Context.js';
14
+ import { MembershipCharger } from '../../../helpers/MembershipCharger.js';
15
+ import { MemberUserSyncer } from '../../../helpers/MemberUserSyncer.js';
16
+ import { SetupStepUpdater } from '../../../helpers/SetupStepUpdater.js';
17
+ import { didUitpasReviewChange, updateMemberDetailsUitpasNumber, updateMemberDetailsUitpasNumberForPatch } from '../../../helpers/updateMemberDetailsUitpasNumber.js';
18
+ import { MemberNumberService } from '../../../services/MemberNumberService.js';
19
+ import { PlatformMembershipService } from '../../../services/PlatformMembershipService.js';
20
+ import { RegistrationService } from '../../../services/RegistrationService.js';
21
+ import { shouldCheckIfMemberIsDuplicateForPatch } from './shouldCheckIfMemberIsDuplicate.js';
21
22
 
22
23
  type Params = Record<string, never>;
23
24
  type Query = undefined;
@@ -90,7 +91,9 @@ export class PatchOrganizationMembersEndpoint extends Endpoint<Params, Query, Bo
90
91
  member.organizationId = organization.id;
91
92
  }
92
93
  const securityCode = struct.details.securityCode; // will get cleared after the filter
93
- Context.auth.filterMemberPut(member, struct, {asUserManager: false});
94
+ Context.auth.filterMemberPut(member, struct, { asUserManager: false });
95
+
96
+ await updateMemberDetailsUitpasNumber(struct.details);
94
97
  struct.details.cleanData();
95
98
  member.details = struct.details;
96
99
 
@@ -167,7 +170,15 @@ export class PatchOrganizationMembersEndpoint extends Endpoint<Params, Query, Bo
167
170
  shouldCheckDuplicate = shouldCheckIfMemberIsDuplicateForPatch(patch, originalDetails);
168
171
 
169
172
  const wasReduced = member.details.shouldApplyReducedPrice;
173
+
174
+ const originalReviewTimes = member.details.reviewTimes;
175
+ const previousUitpasNumber = member.details.uitpasNumberDetails?.uitpasNumber ?? null;
170
176
  member.details.patchOrPut(patch.details);
177
+
178
+ if (patch.details.uitpasNumberDetails || didUitpasReviewChange(patch.details.reviewTimes, originalReviewTimes)) {
179
+ await updateMemberDetailsUitpasNumberForPatch(member.id, member.details, previousUitpasNumber);
180
+ }
181
+
171
182
  member.details.cleanData();
172
183
 
173
184
  if (wasReduced !== member.details.shouldApplyReducedPrice) {