@stamhoofd/backend 2.118.1 → 2.120.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 (362) hide show
  1. package/package.json +32 -22
  2. package/src/audit-logs/ModelLogger.ts +4 -2
  3. package/src/audit-logs/OrderLogger.ts +1 -1
  4. package/src/boot.ts +32 -14
  5. package/src/crons/balance-emails.ts +4 -2
  6. package/src/crons/clearExcelCache.test.ts +8 -8
  7. package/src/crons/update-cached-balances.ts +40 -14
  8. package/src/debug.ts +3 -2
  9. package/src/decoders/StringArrayDecoder.ts +1 -1
  10. package/src/decoders/StringNullableDecoder.ts +1 -1
  11. package/src/email-recipient-loaders/documents.ts +2 -1
  12. package/src/email-recipient-loaders/members.ts +2 -1
  13. package/src/email-recipient-loaders/orders.ts +2 -1
  14. package/src/email-recipient-loaders/payments.ts +6 -3
  15. package/src/email-recipient-loaders/receivable-balances.ts +2 -1
  16. package/src/email-recipient-loaders/registrations.ts +2 -1
  17. package/src/email-replacements/getEmailReplacementsForPayment.ts +8 -7
  18. package/src/endpoints/admin/members/ChargeMembersEndpoint.ts +7 -6
  19. package/src/endpoints/admin/memberships/ChargeMembershipsEndpoint.ts +3 -2
  20. package/src/endpoints/admin/memberships/GetChargeMembershipsSummaryEndpoint.ts +2 -1
  21. package/src/endpoints/admin/organizations/ChargeOrganizationsEndpoint.ts +4 -3
  22. package/src/endpoints/admin/organizations/GetOrganizationsCountEndpoint.ts +3 -2
  23. package/src/endpoints/admin/organizations/GetOrganizationsEndpoint.ts +7 -5
  24. package/src/endpoints/admin/organizations/PatchOrganizationsEndpoint.ts +12 -10
  25. package/src/endpoints/admin/registrations/ChargeRegistrationsEndpoint.ts +4 -3
  26. package/src/endpoints/auth/CreateAdminEndpoint.ts +8 -6
  27. package/src/endpoints/auth/CreateTokenEndpoint.ts +14 -12
  28. package/src/endpoints/auth/DeleteTokenEndpoint.ts +2 -1
  29. package/src/endpoints/auth/DeleteUserEndpoint.ts +2 -1
  30. package/src/endpoints/auth/ForgotPasswordEndpoint.ts +5 -4
  31. package/src/endpoints/auth/GetOtherUserEndpoint.ts +3 -2
  32. package/src/endpoints/auth/GetUserEndpoint.ts +3 -2
  33. package/src/endpoints/auth/OpenIDConnectAuthTokenEndpoint.ts +2 -1
  34. package/src/endpoints/auth/OpenIDConnectCallbackEndpoint.ts +4 -2
  35. package/src/endpoints/auth/OpenIDConnectStartEndpoint.ts +3 -2
  36. package/src/endpoints/auth/PatchUserEndpoint.ts +15 -12
  37. package/src/endpoints/auth/PollEmailVerificationEndpoint.ts +3 -2
  38. package/src/endpoints/auth/RetryEmailVerificationEndpoint.ts +3 -2
  39. package/src/endpoints/auth/SignupEndpoint.ts +5 -4
  40. package/src/endpoints/auth/VerifyEmailEndpoint.ts +6 -5
  41. package/src/endpoints/frontend/FrontendEnvironmentEndpoint.ts +3 -2
  42. package/src/endpoints/global/addresses/SearchRegionsEndpoint.ts +8 -5
  43. package/src/endpoints/global/addresses/ValidateAddressEndpoint.ts +5 -3
  44. package/src/endpoints/global/audit-logs/GetAuditLogsEndpoint.ts +8 -5
  45. package/src/endpoints/global/billing/ActivatePackagesEndpoint.ts +9 -7
  46. package/src/endpoints/global/billing/DeactivatePackageEndpoint.ts +4 -3
  47. package/src/endpoints/global/caddy/CheckDomainCertEndpoint.ts +4 -2
  48. package/src/endpoints/global/email/CreateEmailEndpoint.ts +9 -7
  49. package/src/endpoints/global/email/GetAdminEmailsEndpoint.test.ts +2 -1
  50. package/src/endpoints/global/email/GetAdminEmailsEndpoint.ts +22 -19
  51. package/src/endpoints/global/email/GetEmailAddressEndpoint.ts +6 -4
  52. package/src/endpoints/global/email/GetEmailEndpoint.ts +4 -3
  53. package/src/endpoints/global/email/GetUserEmailsEndpoint.test.ts +3 -2
  54. package/src/endpoints/global/email/GetUserEmailsEndpoint.ts +7 -4
  55. package/src/endpoints/global/email/ManageEmailAddressEndpoint.ts +7 -5
  56. package/src/endpoints/global/email/PatchEmailEndpoint.test.ts +11 -11
  57. package/src/endpoints/global/email/PatchEmailEndpoint.ts +14 -11
  58. package/src/endpoints/global/email-recipients/GetEmailRecipientsCountEndpoint.ts +3 -2
  59. package/src/endpoints/global/email-recipients/GetEmailRecipientsEndpoint.test.ts +2 -1
  60. package/src/endpoints/global/email-recipients/GetEmailRecipientsEndpoint.ts +8 -5
  61. package/src/endpoints/global/email-recipients/RetryEmailRecipientEndpoint.ts +7 -5
  62. package/src/endpoints/global/email-recipients/helpers/validateEmailRecipientFilter.ts +4 -3
  63. package/src/endpoints/global/events/GetEventNotificationsCountEndpoint.ts +3 -2
  64. package/src/endpoints/global/events/GetEventNotificationsEndpoint.ts +9 -6
  65. package/src/endpoints/global/events/GetEventsEndpoint.ts +7 -4
  66. package/src/endpoints/global/events/PatchEventNotificationsEndpoint.test.ts +4 -2
  67. package/src/endpoints/global/events/PatchEventNotificationsEndpoint.ts +17 -15
  68. package/src/endpoints/global/events/PatchEventsEndpoint.test.ts +4 -2
  69. package/src/endpoints/global/events/PatchEventsEndpoint.ts +28 -26
  70. package/src/endpoints/global/files/ExportToExcelEndpoint.ts +8 -5
  71. package/src/endpoints/global/files/GetFileCache.ts +5 -3
  72. package/src/endpoints/global/files/UploadFile.ts +10 -4
  73. package/src/endpoints/global/files/UploadImage.ts +4 -2
  74. package/src/endpoints/global/groups/GetGroupsEndpoint.test.ts +4 -2
  75. package/src/endpoints/global/groups/GetGroupsEndpoint.ts +8 -5
  76. package/src/endpoints/global/members/GetMemberFamilyEndpoint.ts +7 -5
  77. package/src/endpoints/global/members/GetMembersCountEndpoint.ts +3 -2
  78. package/src/endpoints/global/members/GetMembersEndpoint.test.ts +4 -2
  79. package/src/endpoints/global/members/GetMembersEndpoint.ts +10 -8
  80. package/src/endpoints/global/members/PatchOrganizationMembersEndpoint.test.ts +257 -6
  81. package/src/endpoints/global/members/PatchOrganizationMembersEndpoint.ts +162 -107
  82. package/src/endpoints/global/members/helpers/validateGroupFilter.ts +4 -3
  83. package/src/endpoints/global/members/shouldCheckIfMemberIsDuplicate.ts +3 -2
  84. package/src/endpoints/global/organizations/CheckRegisterCodeEndpoint.ts +3 -2
  85. package/src/endpoints/global/organizations/CreateOrganizationEndpoint.test.ts +3 -2
  86. package/src/endpoints/global/organizations/CreateOrganizationEndpoint.ts +8 -7
  87. package/src/endpoints/global/organizations/GetOrganizationFromDomainEndpoint.ts +5 -3
  88. package/src/endpoints/global/organizations/GetOrganizationFromUriEndpoint.ts +5 -3
  89. package/src/endpoints/global/organizations/SearchOrganizationEndpoint.ts +8 -5
  90. package/src/endpoints/global/payments/StripeWebhookEndpoint.ts +4 -2
  91. package/src/endpoints/global/platform/GetPlatformAdminsEndpoint.ts +2 -1
  92. package/src/endpoints/global/platform/GetPlatformEndpoint.ts +3 -2
  93. package/src/endpoints/global/platform/PatchPlatformEnpoint.test.ts +3 -2
  94. package/src/endpoints/global/platform/PatchPlatformEnpoint.ts +7 -4
  95. package/src/endpoints/global/platform-memberships/GetPlatformMembershipsCountEndpoint.ts +47 -0
  96. package/src/endpoints/global/platform-memberships/GetPlatformMembershipsEndpoint.ts +206 -0
  97. package/src/endpoints/global/registration/GetRegistrationsCountEndpoint.ts +3 -2
  98. package/src/endpoints/global/registration/GetRegistrationsEndpoint.test.ts +2 -1
  99. package/src/endpoints/global/registration/GetRegistrationsEndpoint.ts +10 -7
  100. package/src/endpoints/global/registration/GetUserDetailedPayableBalanceEndpoint.ts +4 -2
  101. package/src/endpoints/global/registration/GetUserDocumentsEndpoint.ts +4 -2
  102. package/src/endpoints/global/registration/GetUserMembersEndpoint.ts +3 -2
  103. package/src/endpoints/global/registration/GetUserPayableBalanceEndpoint.ts +2 -1
  104. package/src/endpoints/global/registration/PatchUserMembersEndpoint.test.ts +5 -3
  105. package/src/endpoints/global/registration/PatchUserMembersEndpoint.ts +13 -9
  106. package/src/endpoints/global/registration/RegisterMembersEndpoint.test.ts +50 -49
  107. package/src/endpoints/global/registration/RegisterMembersEndpoint.ts +25 -22
  108. package/src/endpoints/global/registration-periods/GetRegistrationPeriodsEndpoint.ts +8 -5
  109. package/src/endpoints/global/registration-periods/PatchRegistrationPeriodsEndpoint.ts +9 -7
  110. package/src/endpoints/global/sso/GetSSOEndpoint.ts +4 -2
  111. package/src/endpoints/global/sso/SetSSOEndpoint.ts +3 -2
  112. package/src/endpoints/global/webshops/GetWebshopFromDomainEndpoint.ts +4 -2
  113. package/src/endpoints/global/webshops/GetWebshopsCountEndpoint.ts +43 -0
  114. package/src/endpoints/global/webshops/GetWebshopsEndpoint.test.ts +808 -0
  115. package/src/endpoints/global/webshops/GetWebshopsEndpoint.ts +221 -0
  116. package/src/endpoints/organization/dashboard/balance-items/GetBalanceItemEndpoint.ts +4 -3
  117. package/src/endpoints/organization/dashboard/balance-items/GetBalanceItemsCountEndpoint.ts +3 -2
  118. package/src/endpoints/organization/dashboard/balance-items/GetBalanceItemsEndpoint.ts +6 -4
  119. package/src/endpoints/organization/dashboard/balance-items/PatchBalanceItemsEndpoint.ts +15 -13
  120. package/src/endpoints/organization/dashboard/billing/GetOrganizationDetailedPayableBalanceEndpoint.ts +4 -2
  121. package/src/endpoints/organization/dashboard/billing/GetOrganizationPayableBalanceEndpoint.ts +4 -2
  122. package/src/endpoints/organization/dashboard/billing/GetPackagesEndpoint.ts +2 -1
  123. package/src/endpoints/organization/dashboard/documents/GetDocumentTemplateXML.ts +3 -2
  124. package/src/endpoints/organization/dashboard/documents/GetDocumentTemplatesCountEndpoint.ts +3 -2
  125. package/src/endpoints/organization/dashboard/documents/GetDocumentTemplatesEndpoint.ts +7 -4
  126. package/src/endpoints/organization/dashboard/documents/GetDocumentsCountEndpoint.ts +3 -2
  127. package/src/endpoints/organization/dashboard/documents/GetDocumentsEndpoint.ts +7 -4
  128. package/src/endpoints/organization/dashboard/documents/PatchDocumentEndpoint.ts +9 -7
  129. package/src/endpoints/organization/dashboard/documents/PatchDocumentTemplatesEndpoint.test.ts +4 -2
  130. package/src/endpoints/organization/dashboard/documents/PatchDocumentTemplatesEndpoint.ts +7 -5
  131. package/src/endpoints/organization/dashboard/email/CheckEmailBouncesEndpoint.ts +3 -2
  132. package/src/endpoints/organization/dashboard/email-templates/GetEmailTemplatesEndpoint.test.ts +36 -1
  133. package/src/endpoints/organization/dashboard/email-templates/GetEmailTemplatesEndpoint.ts +13 -4
  134. package/src/endpoints/organization/dashboard/email-templates/PatchEmailTemplatesEndpoint.test.ts +4 -2
  135. package/src/endpoints/organization/dashboard/email-templates/PatchEmailTemplatesEndpoint.ts +7 -5
  136. package/src/endpoints/organization/dashboard/invoices/GetInvoicesCountEndpoint.ts +3 -2
  137. package/src/endpoints/organization/dashboard/invoices/GetInvoicesEndpoint.ts +6 -4
  138. package/src/endpoints/organization/dashboard/invoices/PatchInvoicesEndpoint.ts +5 -3
  139. package/src/endpoints/organization/dashboard/mollie/CheckMollieEndpoint.ts +4 -2
  140. package/src/endpoints/organization/dashboard/mollie/ConnectMollieEndpoint.ts +6 -3
  141. package/src/endpoints/organization/dashboard/mollie/DisconnectMollieEndpoint.ts +4 -2
  142. package/src/endpoints/organization/dashboard/mollie/GetMollieDashboardEndpoint.ts +2 -1
  143. package/src/endpoints/organization/dashboard/nolt/CreateNoltTokenEndpoint.ts +2 -1
  144. package/src/endpoints/organization/dashboard/organization/GetOrganizationArchivedGroups.ts +4 -2
  145. package/src/endpoints/organization/dashboard/organization/GetOrganizationDeletedGroups.ts +3 -2
  146. package/src/endpoints/organization/dashboard/organization/GetUitpasClientIdEndpoint.ts +2 -1
  147. package/src/endpoints/organization/dashboard/organization/PatchOrganizationEndpoint.test.ts +5 -3
  148. package/src/endpoints/organization/dashboard/organization/PatchOrganizationEndpoint.ts +22 -19
  149. package/src/endpoints/organization/dashboard/organization/SearchUitpasOrganizersEndpoint.ts +5 -3
  150. package/src/endpoints/organization/dashboard/organization/SetOrganizationDomainEndpoint.ts +11 -9
  151. package/src/endpoints/organization/dashboard/organization/SetUitpasClientCredentialsEndpoint.ts +8 -7
  152. package/src/endpoints/organization/dashboard/payments/GetMemberBalanceEndpoint.ts +2 -1
  153. package/src/endpoints/organization/dashboard/payments/GetPaymentsCountEndpoint.ts +3 -2
  154. package/src/endpoints/organization/dashboard/payments/GetPaymentsEndpoint.ts +7 -5
  155. package/src/endpoints/organization/dashboard/payments/PatchPaymentsEndpoint.ts +18 -16
  156. package/src/endpoints/organization/dashboard/receivable-balances/GetReceivableBalanceEndpoint.ts +2 -1
  157. package/src/endpoints/organization/dashboard/receivable-balances/GetReceivableBalancesCountEndpoint.ts +3 -2
  158. package/src/endpoints/organization/dashboard/receivable-balances/GetReceivableBalancesEndpoint.ts +5 -3
  159. package/src/endpoints/organization/dashboard/registration-periods/GetOrganizationRegistrationPeriodsEndpoint.test.ts +2 -1
  160. package/src/endpoints/organization/dashboard/registration-periods/GetOrganizationRegistrationPeriodsEndpoint.ts +8 -5
  161. package/src/endpoints/organization/dashboard/registration-periods/MoveRegistrationPeriods.test.ts +4 -2
  162. package/src/endpoints/organization/dashboard/registration-periods/PatchOrganizationRegistrationPeriodsEndpoint.test.ts +4 -2
  163. package/src/endpoints/organization/dashboard/registration-periods/PatchOrganizationRegistrationPeriodsEndpoint.ts +32 -29
  164. package/src/endpoints/organization/dashboard/registration-periods/SetupStepReviewEndpoint.ts +6 -3
  165. package/src/endpoints/organization/dashboard/stripe/ConnectStripeEndpoint.ts +3 -2
  166. package/src/endpoints/organization/dashboard/stripe/DeleteStripeAccountEndpoint.ts +3 -2
  167. package/src/endpoints/organization/dashboard/stripe/GetStripeAccountLinkEndpoint.ts +5 -3
  168. package/src/endpoints/organization/dashboard/stripe/GetStripeAccountsEndpoint.ts +2 -1
  169. package/src/endpoints/organization/dashboard/stripe/GetStripeLoginLinkEndpoint.ts +5 -3
  170. package/src/endpoints/organization/dashboard/stripe/UpdateStripeAccountEndpoint.ts +3 -2
  171. package/src/endpoints/organization/dashboard/users/CreateApiUserEndpoint.ts +4 -3
  172. package/src/endpoints/organization/dashboard/users/DeleteUserEndpoint.ts +4 -3
  173. package/src/endpoints/organization/dashboard/users/GetApiUsersEndpoint.ts +3 -2
  174. package/src/endpoints/organization/dashboard/users/GetOrganizationAdminsEndpoint.ts +2 -1
  175. package/src/endpoints/organization/dashboard/users/PatchApiUserEndpoint.ts +6 -4
  176. package/src/endpoints/organization/dashboard/webshops/CreateWebshopEndpoint.ts +7 -6
  177. package/src/endpoints/organization/dashboard/webshops/DeleteWebshopEndpoint.ts +3 -2
  178. package/src/endpoints/organization/dashboard/webshops/GetDiscountCodesEndpoint.ts +4 -2
  179. package/src/endpoints/organization/dashboard/webshops/GetWebshopOrdersCountEndpoint.ts +3 -2
  180. package/src/endpoints/organization/dashboard/webshops/GetWebshopOrdersEndpoint.ts +7 -4
  181. package/src/endpoints/organization/dashboard/webshops/{GetWebshopTicketsCountEndpoint → GetWebshopTicketsCountEndpoint.ts} +7 -7
  182. package/src/endpoints/organization/dashboard/webshops/GetWebshopTicketsEndpoint.ts +9 -6
  183. package/src/endpoints/organization/dashboard/webshops/GetWebshopUriAvailabilityEndpoint.ts +4 -2
  184. package/src/endpoints/organization/dashboard/webshops/PatchDiscountCodesEndpoint.ts +6 -4
  185. package/src/endpoints/organization/dashboard/webshops/PatchWebshopEndpoint.ts +13 -12
  186. package/src/endpoints/organization/dashboard/webshops/PatchWebshopOrdersEndpoint.ts +4 -2
  187. package/src/endpoints/organization/dashboard/webshops/PatchWebshopTicketsEndpoint.ts +5 -3
  188. package/src/endpoints/organization/dashboard/webshops/SearchUitpasEventsEndpoint.ts +6 -4
  189. package/src/endpoints/organization/dashboard/webshops/VerifyWebshopDomainEndpoint.ts +2 -1
  190. package/src/endpoints/organization/shared/ExchangePaymentEndpoint.ts +6 -4
  191. package/src/endpoints/organization/shared/GetDocumentHtml.ts +4 -3
  192. package/src/endpoints/organization/shared/GetPaymentEndpoint.ts +4 -3
  193. package/src/endpoints/organization/shared/GetUitpasNumberDetailsEndpoint.ts +3 -2
  194. package/src/endpoints/organization/shared/auth/GetOrganizationEndpoint.ts +3 -2
  195. package/src/endpoints/organization/webshops/CheckWebshopDiscountCodesEndpoint.ts +4 -3
  196. package/src/endpoints/organization/webshops/GetOrderByPaymentEndpoint.ts +5 -4
  197. package/src/endpoints/organization/webshops/GetOrderEndpoint.ts +4 -3
  198. package/src/endpoints/organization/webshops/GetTicketsEndpoint.ts +7 -5
  199. package/src/endpoints/organization/webshops/GetWebshopEndpoint.ts +4 -3
  200. package/src/endpoints/organization/webshops/PlaceOrderEndpoint.test.ts +7 -3
  201. package/src/endpoints/organization/webshops/PlaceOrderEndpoint.ts +11 -10
  202. package/src/endpoints/organization/webshops/RetrieveUitpasSocialTariffPriceEndpoint.ts +5 -4
  203. package/src/endpoints/system/HealthEndpoint.test.ts +44 -0
  204. package/src/endpoints/system/HealthEndpoint.ts +14 -6
  205. package/src/excel-loaders/balance-items.ts +19 -17
  206. package/src/excel-loaders/event-notifications.ts +15 -13
  207. package/src/excel-loaders/index.ts +1 -0
  208. package/src/excel-loaders/members.ts +45 -43
  209. package/src/excel-loaders/organizations.ts +26 -25
  210. package/src/excel-loaders/payments.ts +44 -42
  211. package/src/excel-loaders/platform-memberships.ts +202 -0
  212. package/src/excel-loaders/receivable-balances.ts +25 -23
  213. package/src/excel-loaders/registrations.ts +30 -28
  214. package/src/helpers/AddressValidator.test.ts +2 -1
  215. package/src/helpers/AddressValidator.ts +13 -10
  216. package/src/helpers/AdminPermissionChecker.ts +193 -95
  217. package/src/helpers/AuthenticatedStructures.ts +13 -11
  218. package/src/helpers/BuckarooHelper.ts +3 -2
  219. package/src/helpers/Context.ts +8 -6
  220. package/src/helpers/CookieHelper.ts +2 -2
  221. package/src/helpers/FileCache.ts +9 -9
  222. package/src/helpers/ForwardHandler.ts +3 -2
  223. package/src/helpers/GlobalHelper.ts +2 -0
  224. package/src/helpers/GroupBuilder.ts +2 -1
  225. package/src/helpers/GroupedThrottledQueue.test.ts +19 -19
  226. package/src/helpers/LimitedFilteredRequestHelper.ts +1 -1
  227. package/src/helpers/MemberCharger.ts +2 -1
  228. package/src/helpers/MemberUserSyncer.ts +6 -3
  229. package/src/helpers/MembershipCharger.ts +2 -2
  230. package/src/helpers/OrganizationCharger.ts +2 -1
  231. package/src/helpers/PeriodHelper.ts +2 -1
  232. package/src/helpers/SQLTranslatedString.ts +3 -2
  233. package/src/helpers/ServiceFeeHelper.ts +1 -1
  234. package/src/helpers/SetupStepUpdater.ts +6 -5
  235. package/src/helpers/StripeHelper.ts +9 -8
  236. package/src/helpers/TagHelper.test.ts +5 -5
  237. package/src/helpers/TagHelper.ts +2 -1
  238. package/src/helpers/TemporaryMemberAccess.ts +2 -1
  239. package/src/helpers/ThrottledQueue.test.ts +20 -20
  240. package/src/helpers/UitpasTokenRepository.ts +7 -7
  241. package/src/helpers/ViesHelper.ts +5 -4
  242. package/src/helpers/XlsxTransformerColumnHelper.ts +21 -19
  243. package/src/helpers/email-html-helpers.ts +13 -12
  244. package/src/helpers/fetchToAsyncIterator.ts +1 -1
  245. package/src/helpers/outstandingBalanceJoin.ts +2 -1
  246. package/src/helpers/updateMemberDetailsUitpasNumber.ts +5 -4
  247. package/src/middleware/ContextMiddleware.ts +1 -1
  248. package/src/migrate.ts +21 -4
  249. package/src/seeds/0000000003-default-email-templates.ts +1 -1
  250. package/src/seeds/0000000004-single-organization.ts +2 -1
  251. package/src/seeds/1752848561-groups-registration-periods.ts +3 -2
  252. package/src/seeds/1754560914-groups-prices.test.ts +2 -1
  253. package/src/seeds/1754560914-groups-prices.ts +2 -1
  254. package/src/seeds/1755790070-fill-email-recipient-errors.ts +6 -6
  255. package/src/seeds/1755876819-remove-duplicate-members.ts +2 -1
  256. package/src/seeds/1765896674-document-update-year.test.ts +2 -1
  257. package/src/seeds/1773754928-force-save-members.ts +15 -0
  258. package/src/services/AuditLogService.ts +3 -2
  259. package/src/services/BalanceItemPaymentService.ts +2 -2
  260. package/src/services/BalanceItemService.ts +2 -1
  261. package/src/services/BootChecksService.test.ts +33 -0
  262. package/src/services/BootChecksService.ts +21 -0
  263. package/src/services/DatabaseCollationService.test.ts +18 -0
  264. package/src/services/DatabaseCollationService.ts +81 -0
  265. package/src/services/DocumentService.ts +1 -1
  266. package/src/services/EventNotificationService.ts +5 -4
  267. package/src/services/FileSignService.ts +2 -2
  268. package/src/services/InvoiceService.ts +3 -3
  269. package/src/services/MemberNumberService.ts +6 -4
  270. package/src/services/MemberRecordStore.ts +28 -19
  271. package/src/services/PaymentReallocationService.test.ts +2 -1
  272. package/src/services/PaymentReallocationService.ts +2 -1
  273. package/src/services/PaymentService.ts +28 -26
  274. package/src/services/RegistrationService.ts +65 -3
  275. package/src/services/SSOService.ts +13 -9
  276. package/src/services/STPackageService.ts +7 -5
  277. package/src/services/StartupHealthService.ts +15 -0
  278. package/src/services/uitpas/PassholderEndpoints.ts +2 -2
  279. package/src/services/uitpas/UitpasService.ts +11 -8
  280. package/src/services/uitpas/cancelTicketSales.ts +1 -1
  281. package/src/services/uitpas/checkPermissionsFor.ts +9 -9
  282. package/src/services/uitpas/getSocialTariffForEvent.ts +4 -4
  283. package/src/services/uitpas/getSocialTariffForUitpasNumbers.ts +5 -5
  284. package/src/services/uitpas/handleUitpasResponse.ts +1 -1
  285. package/src/services/uitpas/registerTicketSales.ts +4 -4
  286. package/src/services/uitpas/searchUitpasEvents.ts +3 -3
  287. package/src/services/uitpas/searchUitpasOrganizers.ts +3 -3
  288. package/src/sql-filters/audit-logs.ts +2 -1
  289. package/src/sql-filters/balance-item-payments.ts +2 -1
  290. package/src/sql-filters/balance-items.ts +2 -1
  291. package/src/sql-filters/base-registration-filter-compilers.ts +6 -4
  292. package/src/sql-filters/document-templates.ts +2 -1
  293. package/src/sql-filters/documents.ts +2 -1
  294. package/src/sql-filters/email-recipients.ts +2 -1
  295. package/src/sql-filters/emails.ts +2 -1
  296. package/src/sql-filters/event-notifications.ts +2 -1
  297. package/src/sql-filters/events.ts +2 -1
  298. package/src/sql-filters/groups.ts +2 -1
  299. package/src/sql-filters/invoiced-balance-items.ts +2 -1
  300. package/src/sql-filters/invoices.ts +2 -1
  301. package/src/sql-filters/member-responsibility-records.ts +2 -1
  302. package/src/sql-filters/members.ts +8 -7
  303. package/src/sql-filters/orders.ts +3 -2
  304. package/src/sql-filters/organization-registration-periods.ts +2 -1
  305. package/src/sql-filters/organizations.ts +2 -1
  306. package/src/sql-filters/payments.ts +2 -1
  307. package/src/sql-filters/platform-memberships.ts +67 -0
  308. package/src/sql-filters/receivable-balances.ts +2 -1
  309. package/src/sql-filters/registration-periods.ts +2 -1
  310. package/src/sql-filters/registrations.ts +2 -1
  311. package/src/sql-filters/tickets.ts +2 -1
  312. package/src/sql-filters/users.ts +2 -1
  313. package/src/sql-filters/webshops.ts +38 -0
  314. package/src/sql-sorters/audit-logs.ts +3 -2
  315. package/src/sql-sorters/balance-items.ts +3 -2
  316. package/src/sql-sorters/document-templates.ts +3 -2
  317. package/src/sql-sorters/documents.ts +3 -2
  318. package/src/sql-sorters/email-recipients.ts +3 -2
  319. package/src/sql-sorters/emails.ts +3 -2
  320. package/src/sql-sorters/event-notifications.ts +3 -2
  321. package/src/sql-sorters/events.ts +3 -2
  322. package/src/sql-sorters/groups.ts +3 -2
  323. package/src/sql-sorters/invoices.ts +3 -2
  324. package/src/sql-sorters/members.ts +3 -2
  325. package/src/sql-sorters/orders.ts +3 -2
  326. package/src/sql-sorters/organization-registration-periods.ts +3 -2
  327. package/src/sql-sorters/organizations.ts +3 -2
  328. package/src/sql-sorters/payments.ts +3 -2
  329. package/src/sql-sorters/platform-memberships.ts +40 -0
  330. package/src/sql-sorters/receivable-balances.ts +3 -2
  331. package/src/sql-sorters/registration-periods.ts +3 -2
  332. package/src/sql-sorters/registrations.ts +3 -2
  333. package/src/sql-sorters/tickets.ts +3 -2
  334. package/src/sql-sorters/webshops.ts +40 -0
  335. package/tests/actions/patchOrganizationMember.ts +5 -4
  336. package/tests/actions/patchPaymentStatus.ts +2 -2
  337. package/tests/actions/patchUserMember.ts +6 -4
  338. package/tests/e2e/api-rate-limits.test.ts +4 -5
  339. package/tests/e2e/bundle-discounts.test.ts +3 -2
  340. package/tests/e2e/charge-members.test.ts +7 -5
  341. package/tests/e2e/documents.test.ts +3 -2
  342. package/tests/e2e/private-files.test.ts +11 -13
  343. package/tests/e2e/register.test.ts +6 -5
  344. package/tests/e2e/stock.test.ts +6 -8
  345. package/tests/e2e/tickets.test.ts +4 -2
  346. package/tests/helpers/StripeMocker.ts +3 -3
  347. package/tests/init/initAdmin.ts +4 -2
  348. package/tests/init/initBundleDiscount.ts +3 -2
  349. package/tests/init/initPayconiq.ts +1 -1
  350. package/tests/init/initPermissionRole.ts +4 -2
  351. package/tests/init/initPlatformRecordCategory.ts +1 -1
  352. package/tests/init/initStripe.ts +1 -1
  353. package/tests/vitest.global.setup.ts +26 -0
  354. package/tests/{jest.setup.ts → vitest.setup.ts} +4 -3
  355. package/tsconfig.build.json +17 -0
  356. package/tsconfig.json +10 -41
  357. package/tsconfig.test.json +17 -0
  358. package/vitest.config.js +13 -0
  359. package/eslint.config.mjs +0 -5
  360. package/jest.config.cjs +0 -27
  361. package/tests/jest.global.setup.ts +0 -33
  362. package/tests/toMatchMap.ts +0 -68
@@ -1,7 +1,9 @@
1
1
  import { field } from '@simonbackx/simple-encoding';
2
- import { XlsxBuiltInNumberFormat, XlsxTransformerColumn, XlsxTransformerConcreteColumn } from '@stamhoofd/excel-writer';
2
+ import type { XlsxTransformerColumn, XlsxTransformerConcreteColumn } from '@stamhoofd/excel-writer';
3
+ import { XlsxBuiltInNumberFormat } from '@stamhoofd/excel-writer';
3
4
  import { StripeAccount } from '@stamhoofd/models';
4
- import { BalanceItemPaymentDetailed, BalanceItemRelationType, ExcelExportType, getBalanceItemRelationTypeName, getBalanceItemTypeName, PaginatedResponse, PaymentGeneral, PaymentMethodHelper, PaymentStatusHelper, StripeAccount as StripeAccountStruct } from '@stamhoofd/structures';
5
+ import type { BalanceItemPaymentDetailed} from '@stamhoofd/structures';
6
+ import { BalanceItemRelationType, ExcelExportType, getBalanceItemRelationTypeName, getBalanceItemTypeName, PaginatedResponse, PaymentGeneral, PaymentMethodHelper, PaymentStatusHelper, StripeAccount as StripeAccountStruct } from '@stamhoofd/structures';
5
7
  import { Formatter } from '@stamhoofd/utility';
6
8
  import { ExportToExcelEndpoint } from '../endpoints/global/files/ExportToExcelEndpoint.js';
7
9
  import { GetPaymentsEndpoint } from '../endpoints/organization/dashboard/payments/GetPaymentsEndpoint.js';
@@ -41,7 +43,7 @@ ExportToExcelEndpoint.loaders.set(ExcelExportType.Payments, {
41
43
  sheets: [
42
44
  {
43
45
  id: 'payments',
44
- name: $t(`d4dbb3ee-ab9d-4231-be12-945b7d156900`),
46
+ name: $t(`%1JH`),
45
47
  columns: [
46
48
  ...getGeneralColumns(),
47
49
  ...getInvoiceColumns(),
@@ -53,7 +55,7 @@ ExportToExcelEndpoint.loaders.set(ExcelExportType.Payments, {
53
55
  },
54
56
  {
55
57
  id: 'balanceItemPayments',
56
- name: $t(`fb8a50ba-0429-46f6-8a83-0602ba46bca7`),
58
+ name: $t(`%Ly`),
57
59
  transform: (data: PaymentGeneral): PaymentWithItem[] => data.balanceItemPayments.map(p => ({
58
60
  payment: data,
59
61
  balanceItemPayment: p,
@@ -102,7 +104,7 @@ function getBalanceItemColumns(): XlsxTransformerColumn<PaymentWithItem>[] {
102
104
  return [
103
105
  {
104
106
  id: 'id',
105
- name: $t(`29360811-3663-496c-8d8f-c9fdf9467a74`),
107
+ name: $t(`%d`),
106
108
  width: 40,
107
109
  getValue: (object: PaymentWithItem) => ({
108
110
  value: object.balanceItemPayment.id,
@@ -115,7 +117,7 @@ function getBalanceItemColumns(): XlsxTransformerColumn<PaymentWithItem>[] {
115
117
  },
116
118
  {
117
119
  id: 'balanceItem.id',
118
- name: $t(`89594841-9a44-473f-8250-0ccafb570b6f`),
120
+ name: $t(`%1LE`),
119
121
  width: 40,
120
122
  getValue: (object: PaymentWithItem) => ({
121
123
  value: object.balanceItemPayment.balanceItem.id,
@@ -123,7 +125,7 @@ function getBalanceItemColumns(): XlsxTransformerColumn<PaymentWithItem>[] {
123
125
  },
124
126
  {
125
127
  id: 'paymentId',
126
- name: $t(`0601033f-1678-4781-96cd-1653448d689a`),
128
+ name: $t(`%wU`),
127
129
  width: 40,
128
130
  getValue: (object: PaymentWithItem) => ({
129
131
  value: object.payment.id,
@@ -131,7 +133,7 @@ function getBalanceItemColumns(): XlsxTransformerColumn<PaymentWithItem>[] {
131
133
  },
132
134
  {
133
135
  id: 'balanceItem.type',
134
- name: $t(`f97ad8c1-31d2-4b61-9e09-3be86eaeba08`),
136
+ name: $t(`%1B`),
135
137
  width: 30,
136
138
  getValue: (object: PaymentWithItem) => ({
137
139
  value: getBalanceItemTypeName(object.balanceItemPayment.balanceItem.type),
@@ -139,7 +141,7 @@ function getBalanceItemColumns(): XlsxTransformerColumn<PaymentWithItem>[] {
139
141
  },
140
142
  {
141
143
  id: 'balanceItem.category',
142
- name: $t(`c5d24ab8-a87a-481d-a470-23e9386199f3`),
144
+ name: $t(`%M2`),
143
145
  width: 30,
144
146
  getValue: (object: PaymentWithItem) => {
145
147
  return {
@@ -149,7 +151,7 @@ function getBalanceItemColumns(): XlsxTransformerColumn<PaymentWithItem>[] {
149
151
  },
150
152
  {
151
153
  id: 'balanceItem.description',
152
- name: $t(`9c4977db-1ce9-424b-92cf-4bbe7f6606fd`),
154
+ name: $t(`%6o`),
153
155
  width: 40,
154
156
  getValue: (object: PaymentWithItem) => ({
155
157
  value: object.balanceItemPayment.balanceItem.description,
@@ -157,7 +159,7 @@ function getBalanceItemColumns(): XlsxTransformerColumn<PaymentWithItem>[] {
157
159
  },
158
160
  {
159
161
  id: 'balanceItem.createdAt',
160
- name: $t(`10a1cf76-0757-4c92-9923-a19cd77fe24c`),
162
+ name: $t(`%wV`),
161
163
  width: 16,
162
164
  getValue: (object: PaymentWithItem) => ({
163
165
  value: object.balanceItemPayment.balanceItem.createdAt,
@@ -170,7 +172,7 @@ function getBalanceItemColumns(): XlsxTransformerColumn<PaymentWithItem>[] {
170
172
  },
171
173
  {
172
174
  id: 'balanceItem.dueAt',
173
- name: $t(`3d586760-01f3-42c3-82be-44cea7ad0820`),
175
+ name: $t(`%wW`),
174
176
  width: 16,
175
177
  getValue: (object: PaymentWithItem) => ({
176
178
  value: object.balanceItemPayment.balanceItem.dueAt,
@@ -202,7 +204,7 @@ function getBalanceItemColumns(): XlsxTransformerColumn<PaymentWithItem>[] {
202
204
  },
203
205
  {
204
206
  id: 'amount',
205
- name: $t(`f085f874-242d-47cb-a404-96eab69662ec`),
207
+ name: $t(`%M4`),
206
208
  width: 20,
207
209
  getValue: (object: PaymentWithItem) => ({
208
210
  value: object.balanceItemPayment.amount,
@@ -215,7 +217,7 @@ function getBalanceItemColumns(): XlsxTransformerColumn<PaymentWithItem>[] {
215
217
  },
216
218
  {
217
219
  id: 'unitPrice',
218
- name: $t(`7f7fdce2-1fcd-44c9-8c98-856aea11ffc3`),
220
+ name: $t(`%6q`),
219
221
  width: 20,
220
222
  getValue: (object: PaymentWithItem) => ({
221
223
  value: object.balanceItemPayment.unitPrice / 1_0000,
@@ -228,7 +230,7 @@ function getBalanceItemColumns(): XlsxTransformerColumn<PaymentWithItem>[] {
228
230
  },
229
231
  {
230
232
  id: 'price',
231
- name: $t(`6f3104d4-9b8f-4946-8434-77202efae9f0`),
233
+ name: $t(`%1IP`),
232
234
  width: 20,
233
235
  getValue: (object: PaymentWithItem) => ({
234
236
  value: object.balanceItemPayment.price / 1_0000,
@@ -246,7 +248,7 @@ function getGeneralColumns(): XlsxTransformerConcreteColumn<PaymentGeneral>[] {
246
248
  return [
247
249
  {
248
250
  id: 'id',
249
- name: $t(`29360811-3663-496c-8d8f-c9fdf9467a74`),
251
+ name: $t(`%d`),
250
252
  width: 40,
251
253
  getValue: (object: PaymentGeneralWithStripeAccount) => ({
252
254
  value: object.id,
@@ -259,7 +261,7 @@ function getGeneralColumns(): XlsxTransformerConcreteColumn<PaymentGeneral>[] {
259
261
  },
260
262
  {
261
263
  id: 'price',
262
- name: $t(`61b7b9cb-287a-4655-bac2-bb2d0b83fe47`),
264
+ name: $t(`%1JL`),
263
265
  width: 10,
264
266
  getValue: (object: PaymentGeneralWithStripeAccount) => ({
265
267
  value: object.price / 1_0000,
@@ -272,7 +274,7 @@ function getGeneralColumns(): XlsxTransformerConcreteColumn<PaymentGeneral>[] {
272
274
  },
273
275
  {
274
276
  id: 'status',
275
- name: $t(`d7003b29-cc92-4ef4-b07b-f283193ef2ae`),
277
+ name: $t(`%1A`),
276
278
  width: 18,
277
279
  getValue: (object: PaymentGeneralWithStripeAccount) => ({
278
280
  value: PaymentStatusHelper.getNameCapitalized(object.status),
@@ -280,7 +282,7 @@ function getGeneralColumns(): XlsxTransformerConcreteColumn<PaymentGeneral>[] {
280
282
  },
281
283
  {
282
284
  id: 'method',
283
- name: $t(`f12ffd5b-2138-41b4-8179-ae7ea2ce7621`),
285
+ name: $t(`%M7`),
284
286
  width: 18,
285
287
  getValue: (object: PaymentGeneralWithStripeAccount) => ({
286
288
  value: PaymentMethodHelper.getNameCapitalized(object.method),
@@ -288,7 +290,7 @@ function getGeneralColumns(): XlsxTransformerConcreteColumn<PaymentGeneral>[] {
288
290
  },
289
291
  {
290
292
  id: 'provider',
291
- name: $t(`126040d7-3625-45c5-b561-4bf6c5baac12`),
293
+ name: $t(`%wX`),
292
294
  width: 16,
293
295
  getValue: (object: PaymentGeneralWithStripeAccount) => ({
294
296
  value: object.provider ?? PaymentMethodHelper.getNameCapitalized(object.method),
@@ -296,7 +298,7 @@ function getGeneralColumns(): XlsxTransformerConcreteColumn<PaymentGeneral>[] {
296
298
  },
297
299
  {
298
300
  id: 'createdAt',
299
- name: $t(`e5902b28-754d-42cd-b245-f403d03b8c56`),
301
+ name: $t(`%1JJ`),
300
302
  width: 16,
301
303
  getValue: (object: PaymentGeneralWithStripeAccount) => ({
302
304
  value: object.createdAt,
@@ -309,7 +311,7 @@ function getGeneralColumns(): XlsxTransformerConcreteColumn<PaymentGeneral>[] {
309
311
  },
310
312
  {
311
313
  id: 'paidAt',
312
- name: $t(`297af5d5-1cb0-4862-b8d4-13416bdefa9f`),
314
+ name: $t(`%wY`),
313
315
  width: 16,
314
316
  getValue: (object: PaymentGeneralWithStripeAccount) => ({
315
317
  value: object.paidAt,
@@ -322,7 +324,7 @@ function getGeneralColumns(): XlsxTransformerConcreteColumn<PaymentGeneral>[] {
322
324
  },
323
325
  {
324
326
  id: 'description',
325
- name: $t(`151006be-86c2-48cd-bcd7-7c3bf9b76080`),
327
+ name: $t(`%X`),
326
328
  width: 60,
327
329
  getValue: (object: PaymentGeneralWithStripeAccount) => ({
328
330
  value: object.balanceItemPayments.map(p => p.toString()).join('\n'),
@@ -340,7 +342,7 @@ function getSettlementColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
340
342
  return [
341
343
  {
342
344
  id: 'settlement.reference',
343
- name: $t(`544a77e9-c915-4f47-afbf-c626396b0308`),
345
+ name: $t(`%M8`),
344
346
  width: 21,
345
347
  getValue: (object: PaymentGeneralWithStripeAccount) => {
346
348
  return {
@@ -350,7 +352,7 @@ function getSettlementColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
350
352
  },
351
353
  {
352
354
  id: 'settlement.settledAt',
353
- name: $t(`fe56b791-fc88-4301-a59a-b5b185d1f124`),
355
+ name: $t(`%MB`),
354
356
  width: 16,
355
357
  getValue: (object: PaymentGeneralWithStripeAccount) => {
356
358
  return {
@@ -365,7 +367,7 @@ function getSettlementColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
365
367
  },
366
368
  {
367
369
  id: 'settlement.amount',
368
- name: $t(`3790be02-581f-4713-8c4b-14cdf430f54a`),
370
+ name: $t(`%MD`),
369
371
  width: 18,
370
372
  getValue: (object: PaymentGeneralWithStripeAccount) => {
371
373
  return {
@@ -385,7 +387,7 @@ function getStripeColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
385
387
  return [
386
388
  {
387
389
  id: 'transferFee',
388
- name: $t(`02754274-677a-4911-9a32-8422a8d9f827`),
390
+ name: $t(`%wZ`),
389
391
  width: 16,
390
392
  getValue: (object: PaymentGeneralWithStripeAccount) => {
391
393
  return {
@@ -400,7 +402,7 @@ function getStripeColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
400
402
  },
401
403
  {
402
404
  id: 'stripeAccountId',
403
- name: $t(`a7f32979-1ee8-47fe-a409-7b17ce9f9d39`),
405
+ name: $t(`%1m`),
404
406
  width: 20,
405
407
  getValue: (object: PaymentGeneralWithStripeAccount) => {
406
408
  return {
@@ -410,7 +412,7 @@ function getStripeColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
410
412
  },
411
413
  {
412
414
  id: 'iban',
413
- name: $t(`f8dd1b1a-3da5-472d-bb46-8763537e53c8`),
415
+ name: $t(`%MH`),
414
416
  width: 20,
415
417
  getValue: (object: PaymentGeneralWithStripeAccount) => {
416
418
  return {
@@ -420,7 +422,7 @@ function getStripeColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
420
422
  },
421
423
  {
422
424
  id: 'ibanName',
423
- name: $t(`04d9151b-cca1-4bce-b320-3e2b7da25575`),
425
+ name: $t(`%MJ`),
424
426
  width: 20,
425
427
  getValue: (object: PaymentGeneralWithStripeAccount) => {
426
428
  return {
@@ -435,7 +437,7 @@ function getTransferColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
435
437
  return [
436
438
  {
437
439
  id: 'transferDescription',
438
- name: $t(`dccdacf7-0760-4b17-8e03-fbfcda7a0b4f`),
440
+ name: $t(`%J8`),
439
441
  width: 25,
440
442
  getValue: (object: PaymentGeneralWithStripeAccount) => {
441
443
  return {
@@ -445,7 +447,7 @@ function getTransferColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
445
447
  },
446
448
  {
447
449
  id: 'transferSettings.creditor',
448
- name: $t(`63c0eca3-d13a-4e13-a9d6-1fc54718fbba`),
450
+ name: $t(`%J5`),
449
451
  width: 25,
450
452
  getValue: (object: PaymentGeneralWithStripeAccount) => {
451
453
  if (!object.transferSettings && object.stripeAccount && object.stripeAccount?.meta.bank_account_bank_name) {
@@ -461,7 +463,7 @@ function getTransferColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
461
463
  },
462
464
  {
463
465
  id: 'transferSettings.iban',
464
- name: $t(`6d5a8830-866d-4fe9-ae26-002a29b6054f`),
466
+ name: $t(`%MO`),
465
467
  width: 30,
466
468
  getValue: (object: PaymentGeneralWithStripeAccount) => {
467
469
  if (!object.transferSettings && object.stripeAccount && object.stripeAccount?.meta.bank_account_last4) {
@@ -482,7 +484,7 @@ function getPayingOrganizationColumns(): XlsxTransformerColumn<PaymentGeneral>[]
482
484
  return [
483
485
  {
484
486
  id: 'payingOrganization.id',
485
- name: $t(`bc1ac306-adaa-4e7b-a02f-47a1683c10b8`),
487
+ name: $t(`%MQ`),
486
488
  width: 40,
487
489
  getValue: (object: PaymentGeneralWithStripeAccount) => {
488
490
  return {
@@ -492,7 +494,7 @@ function getPayingOrganizationColumns(): XlsxTransformerColumn<PaymentGeneral>[]
492
494
  },
493
495
  {
494
496
  id: 'payingOrganization.name',
495
- name: $t(`ffd75ec7-b80b-4b97-961f-21246df7d803`),
497
+ name: $t(`%MT`),
496
498
  width: 30,
497
499
  getValue: (object: PaymentGeneralWithStripeAccount) => {
498
500
  return {
@@ -502,7 +504,7 @@ function getPayingOrganizationColumns(): XlsxTransformerColumn<PaymentGeneral>[]
502
504
  },
503
505
  {
504
506
  id: 'payingOrganization.uri',
505
- name: $t(`a5332744-e6e1-4af9-b05c-cbc21515c4d0`),
507
+ name: $t(`%MS`),
506
508
  width: 30,
507
509
  getValue: (object: PaymentGeneralWithStripeAccount) => {
508
510
  return {
@@ -521,7 +523,7 @@ function getInvoiceColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
521
523
  return [
522
524
  {
523
525
  id: 'customer.name',
524
- name: $t(`522fb6c5-6d4d-4d9c-94b7-3e282fb0ea1f`),
526
+ name: $t(`%Gq`),
525
527
  width: 30,
526
528
  getValue: (object: PaymentGeneralWithStripeAccount) => {
527
529
  return {
@@ -531,7 +533,7 @@ function getInvoiceColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
531
533
  },
532
534
  {
533
535
  id: 'customer.email',
534
- name: $t(`82f4b6ed-afee-4655-9f07-22802e0e7ad9`),
536
+ name: $t(`%1FK`),
535
537
  width: 40,
536
538
  getValue: (object: PaymentGeneralWithStripeAccount) => {
537
539
  return {
@@ -541,7 +543,7 @@ function getInvoiceColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
541
543
  },
542
544
  {
543
545
  id: 'customer.company.name',
544
- name: $t(`ea302250-6bae-409a-a547-78ff71181cfc`),
546
+ name: $t(`%1JI`),
545
547
  width: 30,
546
548
  getValue: (object: PaymentGeneralWithStripeAccount) => {
547
549
  return {
@@ -551,7 +553,7 @@ function getInvoiceColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
551
553
  },
552
554
  {
553
555
  id: 'customer.company.VATNumber',
554
- name: $t(`ee7d3d8e-9dc3-472f-900a-d1c1cc7e3947`),
556
+ name: $t(`%1CK`),
555
557
  width: 20,
556
558
  getValue: (object: PaymentGeneralWithStripeAccount) => {
557
559
  return {
@@ -561,7 +563,7 @@ function getInvoiceColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
561
563
  },
562
564
  {
563
565
  id: 'customer.company.companyNumber',
564
- name: $t(`12f64ea7-fb54-4178-8267-9de12bdf70d7`),
566
+ name: $t(`%wa`),
565
567
  width: 20,
566
568
  getValue: (object: PaymentGeneralWithStripeAccount) => {
567
569
  return {
@@ -575,7 +577,7 @@ function getInvoiceColumns(): XlsxTransformerColumn<PaymentGeneral>[] {
575
577
  }),
576
578
  {
577
579
  id: 'customer.company.administrationEmail',
578
- name: $t(`8eb5f50e-d00d-444d-979a-f80ae834eb9a`),
580
+ name: $t(`%wb`),
579
581
  width: 30,
580
582
  getValue: (object: PaymentGeneralWithStripeAccount) => {
581
583
  return {
@@ -0,0 +1,202 @@
1
+ import type { XlsxTransformerSheet } from '@stamhoofd/excel-writer';
2
+ import { XlsxBuiltInNumberFormat } from '@stamhoofd/excel-writer';
3
+ import type { LimitedFilteredRequest, PlatformMembership } from '@stamhoofd/structures';
4
+ import { ExcelExportType, PaginatedResponse, Platform } from '@stamhoofd/structures';
5
+ import { ExportToExcelEndpoint } from '../endpoints/global/files/ExportToExcelEndpoint.js';
6
+ import { GetPlatformMembershipsEndpoint } from '../endpoints/global/platform-memberships/GetPlatformMembershipsEndpoint.js';
7
+
8
+ // Assign to a typed variable to assure we have correct type checking in place
9
+ const sheet: XlsxTransformerSheet<PlatformMembership> = {
10
+ id: 'platform-memberships',
11
+ name: $t('%1EI'),
12
+ columns: [
13
+ {
14
+ id: 'id',
15
+ name: $t(`%d`),
16
+ width: 40,
17
+ getValue: (membership: PlatformMembership) => ({
18
+ value: membership.id,
19
+ }),
20
+ },
21
+ {
22
+ id: 'type',
23
+ name: $t('Type'),
24
+ width: 40,
25
+ getValue: (membership: PlatformMembership) => {
26
+ const membershipType = Platform.shared.config.membershipTypes.find(m => m.id === membership.membershipTypeId);
27
+ const value = membershipType ? membershipType.name : '';
28
+ return {value};
29
+ },
30
+ },
31
+ {
32
+ id: 'startDate',
33
+ name: $t('Startdatum'),
34
+ width: 20,
35
+ getValue: (membership: PlatformMembership) => {
36
+ return {
37
+ value: membership.startDate,
38
+ style: {
39
+ numberFormat: {
40
+ id: XlsxBuiltInNumberFormat.DateSlash,
41
+ },
42
+ },
43
+ };
44
+ },
45
+ },
46
+ {
47
+ id: 'endDate',
48
+ name: $t('Einddatum'),
49
+ width: 20,
50
+ getValue: (membership: PlatformMembership) => {
51
+ return {
52
+ value: membership.endDate,
53
+ style: {
54
+ numberFormat: {
55
+ id: XlsxBuiltInNumberFormat.DateSlash,
56
+ },
57
+ },
58
+ };
59
+ },
60
+ },
61
+ {
62
+ id: 'price',
63
+ name: $t('Prijs'),
64
+ width: 10,
65
+ getValue: (membership: PlatformMembership) => {
66
+ return {
67
+ value: membership.price / 1_0000,
68
+ style: {
69
+ numberFormat: {
70
+ id: XlsxBuiltInNumberFormat.Currency2DecimalWithRed,
71
+ },
72
+ },
73
+ };
74
+ },
75
+ },
76
+ {
77
+ id: 'priceWithoutDiscount',
78
+ name: $t(`Prijs zonder korting`),
79
+ width: 10,
80
+ getValue: (membership: PlatformMembership) => {
81
+ return {
82
+ value: membership.priceWithoutDiscount / 1_0000,
83
+ style: {
84
+ numberFormat: {
85
+ id: XlsxBuiltInNumberFormat.Currency2DecimalWithRed,
86
+ },
87
+ },
88
+ };
89
+ },
90
+ },
91
+ {
92
+ id: 'trialUntil',
93
+ name: $t(`Einde proefperiode`),
94
+ width: 20,
95
+ getValue: (membership: PlatformMembership) => {
96
+ return {
97
+ value: membership.trialUntil,
98
+ style: {
99
+ numberFormat: {
100
+ id: XlsxBuiltInNumberFormat.DateSlash,
101
+ },
102
+ },
103
+ };
104
+ },
105
+ },
106
+ {
107
+ id: 'freeAmount',
108
+ name: $t(`Dagen gratis`),
109
+ width: 40,
110
+ getValue: (membership: PlatformMembership) => ({
111
+ value: membership.freeAmount,
112
+ }),
113
+ },
114
+ {
115
+ id: 'createdAt',
116
+ name: $t(`Aanmaakdatum`),
117
+ width: 20,
118
+ getValue: (membership: PlatformMembership) => {
119
+ return {
120
+ value: membership.createdAt,
121
+ style: {
122
+ numberFormat: {
123
+ id: XlsxBuiltInNumberFormat.DateSlash,
124
+ },
125
+ },
126
+ };
127
+ },
128
+ },
129
+ {
130
+ id: 'expireDate',
131
+ name: $t(`Vervaldatum`),
132
+ width: 20,
133
+ getValue: (membership: PlatformMembership) => {
134
+ return {
135
+ value: membership.expireDate,
136
+ style: {
137
+ numberFormat: {
138
+ id: XlsxBuiltInNumberFormat.DateSlash,
139
+ },
140
+ },
141
+ };
142
+ },
143
+ },
144
+ // member
145
+ {
146
+ id: 'member.memberNumber',
147
+ name: $t(`Lidnummer`),
148
+ width: 20,
149
+ getValue: (membership: PlatformMembership) => ({
150
+ value: membership.member.memberNumber,
151
+ }),
152
+ },
153
+ {
154
+ id: 'member.firstName',
155
+ name: $t(`Voornaam lid`),
156
+ width: 20,
157
+ getValue:(membership: PlatformMembership) => ({
158
+ value: membership.member.firstName,
159
+ }),
160
+ },
161
+ {
162
+ id: 'member.lastName',
163
+ name: $t(`Achternaam lid`),
164
+ width: 20,
165
+ getValue:(membership: PlatformMembership) => ({
166
+ value: membership.member.lastName,
167
+ }),
168
+ },
169
+ // organization
170
+ {
171
+ id: 'organization.name',
172
+ name: $t(`Naam vereniging`),
173
+ width: 20,
174
+ getValue:(membership: PlatformMembership) => ({
175
+ value: membership.organization.name,
176
+ }),
177
+ },
178
+ {
179
+ id: 'organization.uri',
180
+ name: $t(`Nummer vereniging`),
181
+ width: 20,
182
+ getValue:(membership: PlatformMembership) => ({
183
+ value: membership.organization.uri,
184
+ }),
185
+ }
186
+ ],
187
+ };
188
+
189
+
190
+ ExportToExcelEndpoint.loaders.set(ExcelExportType.PlatformMemberships, {
191
+ fetch: async (query: LimitedFilteredRequest) => {
192
+ const data = await GetPlatformMembershipsEndpoint.buildData(query);
193
+
194
+ return new PaginatedResponse({
195
+ results: data.results,
196
+ next: data.next,
197
+ });
198
+ },
199
+ sheets: [
200
+ sheet,
201
+ ],
202
+ });