@stamhoofd/models 2.115.1 → 2.117.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 (102) hide show
  1. package/dist/src/factories/MemberFactory.d.ts +3 -3
  2. package/dist/src/factories/MemberFactory.d.ts.map +1 -1
  3. package/dist/src/factories/MemberFactory.js.map +1 -1
  4. package/dist/src/helpers/Handlebars.d.ts.map +1 -1
  5. package/dist/src/helpers/Handlebars.js +4 -0
  6. package/dist/src/helpers/Handlebars.js.map +1 -1
  7. package/dist/src/index.d.ts +0 -1
  8. package/dist/src/index.d.ts.map +1 -1
  9. package/dist/src/index.js +0 -1
  10. package/dist/src/index.js.map +1 -1
  11. package/dist/src/migrations/1770917406-create-cached-balances-global-index.sql +2 -0
  12. package/dist/src/migrations/1770917407-create-member-name-ordering-index.sql +2 -0
  13. package/dist/src/migrations/1770917408-create-member-name-ordering-index-desc.sql +2 -0
  14. package/dist/src/migrations/1770917409-create-member-age-ordering-index.sql +2 -0
  15. package/dist/src/migrations/1770917410-create-member-age-ordering-index-desc.sql +2 -0
  16. package/dist/src/migrations/1770917411-drop-duplicate-member-indexes.sql +3 -0
  17. package/dist/src/migrations/1771510518-events-index-organization-id-start-date.sql +2 -0
  18. package/dist/src/migrations/1771918307-membership-active-filter-index.sql +2 -0
  19. package/dist/src/migrations/1772033555-balance-item-package-id.sql +3 -0
  20. package/dist/src/migrations/1772033715-balance-item-start-end-date.sql +3 -0
  21. package/dist/src/models/AuditLog.d.ts +1 -0
  22. package/dist/src/models/AuditLog.d.ts.map +1 -1
  23. package/dist/src/models/AuditLog.js +8 -0
  24. package/dist/src/models/AuditLog.js.map +1 -1
  25. package/dist/src/models/BalanceItem.d.ts +22 -2
  26. package/dist/src/models/BalanceItem.d.ts.map +1 -1
  27. package/dist/src/models/BalanceItem.js +32 -0
  28. package/dist/src/models/BalanceItem.js.map +1 -1
  29. package/dist/src/models/Document.d.ts +3 -3
  30. package/dist/src/models/Document.d.ts.map +1 -1
  31. package/dist/src/models/Document.js +11 -7
  32. package/dist/src/models/Document.js.map +1 -1
  33. package/dist/src/models/DocumentTemplate.d.ts +4 -0
  34. package/dist/src/models/DocumentTemplate.d.ts.map +1 -1
  35. package/dist/src/models/DocumentTemplate.js +33 -12
  36. package/dist/src/models/DocumentTemplate.js.map +1 -1
  37. package/dist/src/models/Group.d.ts +1 -5
  38. package/dist/src/models/Group.d.ts.map +1 -1
  39. package/dist/src/models/Group.js +1 -55
  40. package/dist/src/models/Group.js.map +1 -1
  41. package/dist/src/models/Invoice.d.ts +1 -4
  42. package/dist/src/models/Invoice.d.ts.map +1 -1
  43. package/dist/src/models/Invoice.js +0 -45
  44. package/dist/src/models/Invoice.js.map +1 -1
  45. package/dist/src/models/Member.d.ts +51 -10
  46. package/dist/src/models/Member.d.ts.map +1 -1
  47. package/dist/src/models/Member.js +209 -126
  48. package/dist/src/models/Member.js.map +1 -1
  49. package/dist/src/models/Organization.d.ts +19 -1
  50. package/dist/src/models/Organization.d.ts.map +1 -1
  51. package/dist/src/models/Organization.js +28 -3
  52. package/dist/src/models/Organization.js.map +1 -1
  53. package/dist/src/models/Platform.test.js +3 -3
  54. package/dist/src/models/Platform.test.js.map +1 -1
  55. package/dist/src/models/Registration.d.ts +1 -2
  56. package/dist/src/models/Registration.d.ts.map +1 -1
  57. package/dist/src/models/Registration.js +12 -88
  58. package/dist/src/models/Registration.js.map +1 -1
  59. package/dist/src/models/RegistrationPeriod.d.ts +1 -0
  60. package/dist/src/models/RegistrationPeriod.d.ts.map +1 -1
  61. package/dist/src/models/RegistrationPeriod.js +5 -0
  62. package/dist/src/models/RegistrationPeriod.js.map +1 -1
  63. package/dist/src/models/STPackage.d.ts +1 -5
  64. package/dist/src/models/STPackage.d.ts.map +1 -1
  65. package/dist/src/models/STPackage.js +0 -41
  66. package/dist/src/models/STPackage.js.map +1 -1
  67. package/dist/src/models/User.d.ts.map +1 -1
  68. package/dist/src/models/User.js +1 -0
  69. package/dist/src/models/User.js.map +1 -1
  70. package/dist/tsconfig.tsbuildinfo +1 -1
  71. package/package.json +2 -2
  72. package/src/factories/MemberFactory.ts +3 -3
  73. package/src/helpers/Handlebars.ts +4 -0
  74. package/src/index.ts +0 -1
  75. package/src/migrations/1770917406-create-cached-balances-global-index.sql +2 -0
  76. package/src/migrations/1770917407-create-member-name-ordering-index.sql +2 -0
  77. package/src/migrations/1770917408-create-member-name-ordering-index-desc.sql +2 -0
  78. package/src/migrations/1770917409-create-member-age-ordering-index.sql +2 -0
  79. package/src/migrations/1770917410-create-member-age-ordering-index-desc.sql +2 -0
  80. package/src/migrations/1770917411-drop-duplicate-member-indexes.sql +3 -0
  81. package/src/migrations/1771510518-events-index-organization-id-start-date.sql +2 -0
  82. package/src/migrations/1771918307-membership-active-filter-index.sql +2 -0
  83. package/src/migrations/1772033555-balance-item-package-id.sql +3 -0
  84. package/src/migrations/1772033715-balance-item-start-end-date.sql +3 -0
  85. package/src/models/AuditLog.ts +10 -1
  86. package/src/models/BalanceItem.ts +32 -2
  87. package/src/models/Document.ts +13 -10
  88. package/src/models/DocumentTemplate.ts +37 -13
  89. package/src/models/Group.ts +4 -71
  90. package/src/models/Invoice.ts +0 -57
  91. package/src/models/Member.ts +262 -156
  92. package/src/models/Organization.ts +34 -4
  93. package/src/models/Platform.test.ts +3 -3
  94. package/src/models/Registration.ts +21 -99
  95. package/src/models/RegistrationPeriod.ts +6 -0
  96. package/src/models/STPackage.ts +0 -50
  97. package/src/models/User.ts +2 -1
  98. package/dist/src/helpers/GroupBuilder.d.ts +0 -9
  99. package/dist/src/helpers/GroupBuilder.d.ts.map +0 -1
  100. package/dist/src/helpers/GroupBuilder.js +0 -382
  101. package/dist/src/helpers/GroupBuilder.js.map +0 -1
  102. package/src/helpers/GroupBuilder.ts +0 -415
@@ -1 +1 @@
1
- {"version":3,"file":"User.js","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"User.js","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"root":["../src/index.ts","../src/factories/addressfactory.ts","../src/factories/balanceitemfactory.ts","../src/factories/documenttemplatefactory.ts","../src/factories/emailtemplatefactory.ts","../src/factories/emergencycontactfactory.ts","../src/factories/eventfactory.ts","../src/factories/eventnotificationfactory.ts","../src/factories/eventnotificationtypefactory.ts","../src/factories/groupfactory.ts","../src/factories/memberfactory.ts","../src/factories/memberresponsibilityrecordfactory.ts","../src/factories/organizationfactory.ts","../src/factories/organizationregistrationperiodfactory.ts","../src/factories/organizationtagfactory.ts","../src/factories/parentfactory.ts","../src/factories/platformeventtypefactory.ts","../src/factories/platformresponsibilityfactory.ts","../src/factories/recordanswerfactory.ts","../src/factories/recordcategoryfactory.ts","../src/factories/recordfactory.ts","../src/factories/registercodefactory.ts","../src/factories/registrationfactory.ts","../src/factories/registrationperiodfactory.ts","../src/factories/stpackagefactory.ts","../src/factories/userfactory.ts","../src/factories/webshopfactory.ts","../src/factories/index.ts","../src/helpers/dnsvalidator.ts","../src/helpers/emailbuilder.ts","../src/helpers/groupbuilder.ts","../src/helpers/handlebars.ts","../src/helpers/membermerger.test.ts","../src/helpers/membermerger.ts","../src/helpers/ratelimiter.ts","../src/helpers/webshopcounter.ts","../src/migrations/1605262045-import-postcodes.ts","../src/migrations/1605262046-import-postcodes-nl.ts","../src/models/auditlog.ts","../src/models/balanceitem.ts","../src/models/balanceitempayment.ts","../src/models/buckaroopayment.ts","../src/models/cachedbalance.ts","../src/models/document.ts","../src/models/documenttemplate.test.ts","../src/models/documenttemplate.ts","../src/models/email.test.ts","../src/models/email.ts","../src/models/emailrecipient.ts","../src/models/emailtemplate.ts","../src/models/emailverificationcode.ts","../src/models/event.ts","../src/models/eventnotification.ts","../src/models/group.ts","../src/models/image.ts","../src/models/invoice.ts","../src/models/invoicedbalanceitem.ts","../src/models/member.ts","../src/models/memberplatformmembership.ts","../src/models/memberresponsibilityrecord.ts","../src/models/memberuser.ts","../src/models/mergedmember.ts","../src/models/molliepayment.ts","../src/models/mollietoken.ts","../src/models/onetimetoken.ts","../src/models/order.ts","../src/models/organization.ts","../src/models/organizationregistrationperiod.ts","../src/models/passwordtoken.ts","../src/models/payconiqpayment.ts","../src/models/payment.ts","../src/models/platform.test.ts","../src/models/platform.ts","../src/models/registercode.ts","../src/models/registration.ts","../src/models/registrationperiod.ts","../src/models/stcredit.ts","../src/models/stinvoice.ts","../src/models/stpackage.ts","../src/models/stpendinginvoice.ts","../src/models/stripeaccount.ts","../src/models/stripecheckoutsession.ts","../src/models/stripepaymentintent.ts","../src/models/ticket.ts","../src/models/token.test.ts","../src/models/token.ts","../src/models/uitpasclientcredential.ts","../src/models/usedregistercode.ts","../src/models/user.ts","../src/models/userpermissions.ts","../src/models/webshop.ts","../src/models/webshopdiscountcode.ts","../src/models/webshopuitpasnumber.ts","../src/models/index.ts","../src/models/addresses/city.ts","../src/models/addresses/postalcode.test.ts","../src/models/addresses/postalcode.ts","../src/models/addresses/province.ts","../src/models/addresses/street.ts","../src/structures/organizationservermetadata.ts","../tests/jest.global.setup.ts","../tests/jest.setup.ts","../../../../environment.d.ts","../../../../jest-extended.d.ts","../../../stamhoofd.d.ts"],"version":"5.8.3"}
1
+ {"root":["../src/index.ts","../src/factories/addressfactory.ts","../src/factories/balanceitemfactory.ts","../src/factories/documenttemplatefactory.ts","../src/factories/emailtemplatefactory.ts","../src/factories/emergencycontactfactory.ts","../src/factories/eventfactory.ts","../src/factories/eventnotificationfactory.ts","../src/factories/eventnotificationtypefactory.ts","../src/factories/groupfactory.ts","../src/factories/memberfactory.ts","../src/factories/memberresponsibilityrecordfactory.ts","../src/factories/organizationfactory.ts","../src/factories/organizationregistrationperiodfactory.ts","../src/factories/organizationtagfactory.ts","../src/factories/parentfactory.ts","../src/factories/platformeventtypefactory.ts","../src/factories/platformresponsibilityfactory.ts","../src/factories/recordanswerfactory.ts","../src/factories/recordcategoryfactory.ts","../src/factories/recordfactory.ts","../src/factories/registercodefactory.ts","../src/factories/registrationfactory.ts","../src/factories/registrationperiodfactory.ts","../src/factories/stpackagefactory.ts","../src/factories/userfactory.ts","../src/factories/webshopfactory.ts","../src/factories/index.ts","../src/helpers/dnsvalidator.ts","../src/helpers/emailbuilder.ts","../src/helpers/handlebars.ts","../src/helpers/membermerger.test.ts","../src/helpers/membermerger.ts","../src/helpers/ratelimiter.ts","../src/helpers/webshopcounter.ts","../src/migrations/1605262045-import-postcodes.ts","../src/migrations/1605262046-import-postcodes-nl.ts","../src/models/auditlog.ts","../src/models/balanceitem.ts","../src/models/balanceitempayment.ts","../src/models/buckaroopayment.ts","../src/models/cachedbalance.ts","../src/models/document.ts","../src/models/documenttemplate.test.ts","../src/models/documenttemplate.ts","../src/models/email.test.ts","../src/models/email.ts","../src/models/emailrecipient.ts","../src/models/emailtemplate.ts","../src/models/emailverificationcode.ts","../src/models/event.ts","../src/models/eventnotification.ts","../src/models/group.ts","../src/models/image.ts","../src/models/invoice.ts","../src/models/invoicedbalanceitem.ts","../src/models/member.ts","../src/models/memberplatformmembership.ts","../src/models/memberresponsibilityrecord.ts","../src/models/memberuser.ts","../src/models/mergedmember.ts","../src/models/molliepayment.ts","../src/models/mollietoken.ts","../src/models/onetimetoken.ts","../src/models/order.ts","../src/models/organization.ts","../src/models/organizationregistrationperiod.ts","../src/models/passwordtoken.ts","../src/models/payconiqpayment.ts","../src/models/payment.ts","../src/models/platform.test.ts","../src/models/platform.ts","../src/models/registercode.ts","../src/models/registration.ts","../src/models/registrationperiod.ts","../src/models/stcredit.ts","../src/models/stinvoice.ts","../src/models/stpackage.ts","../src/models/stpendinginvoice.ts","../src/models/stripeaccount.ts","../src/models/stripecheckoutsession.ts","../src/models/stripepaymentintent.ts","../src/models/ticket.ts","../src/models/token.test.ts","../src/models/token.ts","../src/models/uitpasclientcredential.ts","../src/models/usedregistercode.ts","../src/models/user.ts","../src/models/userpermissions.ts","../src/models/webshop.ts","../src/models/webshopdiscountcode.ts","../src/models/webshopuitpasnumber.ts","../src/models/index.ts","../src/models/addresses/city.ts","../src/models/addresses/postalcode.test.ts","../src/models/addresses/postalcode.ts","../src/models/addresses/province.ts","../src/models/addresses/street.ts","../src/structures/organizationservermetadata.ts","../tests/jest.global.setup.ts","../tests/jest.setup.ts","../../../../environment.d.ts","../../../../jest-extended.d.ts","../../../stamhoofd.d.ts"],"version":"5.8.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stamhoofd/models",
3
- "version": "2.115.1",
3
+ "version": "2.117.0",
4
4
  "main": "./dist/src/index.js",
5
5
  "types": "./dist/src/index.d.ts",
6
6
  "license": "UNLICENCED",
@@ -30,5 +30,5 @@
30
30
  "publishConfig": {
31
31
  "access": "public"
32
32
  },
33
- "gitHead": "4b692d62820d095e00524e3c0214e8f73a69506e"
33
+ "gitHead": "ad4b006dca3aa5a7c14b2afc83b6df3c2a72424c"
34
34
  }
@@ -2,7 +2,7 @@ import { Factory } from '@simonbackx/simple-database';
2
2
  import { Gender, MemberDetails, ParentType } from '@stamhoofd/structures';
3
3
  import { Formatter } from '@stamhoofd/utility';
4
4
 
5
- import { Member, MemberWithRegistrations } from '../models/Member.js';
5
+ import { Member, MemberWithUsersRegistrationsAndGroups } from '../models/Member.js';
6
6
  import { Organization } from '../models/Organization.js';
7
7
  import { User } from '../models/User.js';
8
8
  import { EmergencyContactFactory } from './EmergencyContactFactory.js';
@@ -27,8 +27,8 @@ class Options {
27
27
  maxAge?: number;
28
28
  }
29
29
 
30
- export class MemberFactory extends Factory<Options, MemberWithRegistrations> {
31
- async create(): Promise<MemberWithRegistrations> {
30
+ export class MemberFactory extends Factory<Options, MemberWithUsersRegistrationsAndGroups> {
31
+ async create(): Promise<MemberWithUsersRegistrationsAndGroups> {
32
32
  const organization = this.options.organization
33
33
  ?? (STAMHOOFD.userMode === 'organization' ? (await new OrganizationFactory({}).create()) : null);
34
34
 
@@ -81,6 +81,10 @@ Handlebars.registerHelper('filterString', (a, options) => {
81
81
  if (options.hash.type === 'phone') {
82
82
  return Formatter.removeAccents(a).replace(/[^A-Za-z0-9+]+/g, '');
83
83
  }
84
+ if (options.hash.type === 'companyNumber') {
85
+ // BE prefix not allowed
86
+ return Formatter.removeAccents(a).replace(/[^0-9]+/g, '');
87
+ }
84
88
  // Default: alphanumeric
85
89
  return Formatter.removeAccents(a).replace(/[^A-Za-z0-9]+/g, '');
86
90
  });
package/src/index.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  // Helpers
2
2
  export * from './helpers/EmailBuilder.js';
3
- export * from './helpers/GroupBuilder.js';
4
3
  export * from './helpers/MemberMerger.js';
5
4
  export * from './helpers/RateLimiter.js';
6
5
  export * from './helpers/WebshopCounter.js';
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `cached_outstanding_balances`
2
+ ADD INDEX `globalObjectId` (`objectId`,`objectType`) USING BTREE;
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `members`
2
+ ADD UNIQUE INDEX `order_by_name` (`firstName`,`lastName`,`id`) USING BTREE;
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `members`
2
+ ADD UNIQUE INDEX `order_by_name_desc` (`firstName` desc,`lastName` desc,`id` desc) USING BTREE;
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `members`
2
+ ADD UNIQUE INDEX `order_by_birth_day` (`birthDay`, `id`) USING BTREE;
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `members`
2
+ ADD UNIQUE INDEX `order_by_birth_day_desc` (`birthDay` desc, `id` desc) USING BTREE;
@@ -0,0 +1,3 @@
1
+ ALTER TABLE `members`
2
+ DROP INDEX `name`,
3
+ DROP INDEX `birthDay`;
@@ -0,0 +1,2 @@
1
+ ALTER TABLE events
2
+ ADD INDEX idx_org_startdate (organizationId, startDate);
@@ -0,0 +1,2 @@
1
+ CREATE INDEX `idx_memberships_lookup`
2
+ ON `member_platform_memberships` (`memberId`, `deletedAt`, `startDate`, `endDate`);
@@ -0,0 +1,3 @@
1
+ ALTER TABLE `balance_items`
2
+ ADD COLUMN `packageId` varchar(36) NULL AFTER `memberId`,
3
+ ADD FOREIGN KEY (`packageId`) REFERENCES `stamhoofd_packages` (`id`) ON UPDATE CASCADE ON DELETE SET NULL;
@@ -0,0 +1,3 @@
1
+ ALTER TABLE `balance_items`
2
+ ADD COLUMN `startDate` datetime NULL AFTER `status`,
3
+ ADD COLUMN `endDate` datetime NULL AFTER `startDate`;
@@ -1,7 +1,7 @@
1
1
  import { column } from '@simonbackx/simple-database';
2
2
  import { ArrayDecoder, Decoder, MapDecoder, StringDecoder, StringOrNumberDecoder } from '@simonbackx/simple-encoding';
3
3
  import { QueryableModel } from '@stamhoofd/sql';
4
- import { AuditLogPatchItem, AuditLogReplacement, AuditLogSource, AuditLogType } from '@stamhoofd/structures';
4
+ import { AuditLogPatchItem, AuditLogReplacement, AuditLogSource, AuditLogType, getAuditLogTypeReplacements } from '@stamhoofd/structures';
5
5
  import { v7 as uuidv7 } from 'uuid';
6
6
 
7
7
  export class AuditLog extends QueryableModel {
@@ -70,4 +70,13 @@ export class AuditLog extends QueryableModel {
70
70
  },
71
71
  })
72
72
  createdAt: Date;
73
+
74
+ validate() {
75
+ const replacements = getAuditLogTypeReplacements(this.type);
76
+ for (const replacement of replacements) {
77
+ if (!this.replacements.has(replacement)) {
78
+ throw new Error(`Missing replacement ${replacement}`);
79
+ }
80
+ }
81
+ }
73
82
  }
@@ -48,6 +48,12 @@ export class BalanceItem extends QueryableModel {
48
48
  @column({ type: 'string', nullable: true })
49
49
  orderId: string | null = null;
50
50
 
51
+ /**
52
+ * The STPackage ID that is linked to this balance item
53
+ */
54
+ @column({ type: 'string', nullable: true })
55
+ packageId: string | null = null;
56
+
51
57
  /**
52
58
  * The depending balance item ID that is linked to this balance item
53
59
  * -> as soon as this balance item is paid, we'll mark this balance item as pending if it is still hidden
@@ -65,6 +71,20 @@ export class BalanceItem extends QueryableModel {
65
71
  @column({ type: 'string' })
66
72
  description = '';
67
73
 
74
+ /**
75
+ * In case this balance item is associated with an item that was charged for a certain period, the startDate is saved here.
76
+ * e.g. startDate of the registration.
77
+ */
78
+ @column({ type: 'datetime', nullable: true })
79
+ startDate: Date | null = null;
80
+
81
+ /**
82
+ * In case this balance item is associated with an item that was charged for a certain period, the endDate is saved here.
83
+ * e.g. endDate of the registration.
84
+ */
85
+ @column({ type: 'datetime', nullable: true })
86
+ endDate: Date | null = null;
87
+
68
88
  /**
69
89
  * @deprecated Use quantity
70
90
  */
@@ -306,6 +326,16 @@ export class BalanceItem extends QueryableModel {
306
326
  return this.priceWithVAT - this.pricePaid - this.pricePending;
307
327
  }
308
328
 
329
+ /**
330
+ * Returns zero if the balance item is canceled, otherwise priceWithVAT
331
+ */
332
+ get priceDue() {
333
+ if (this.status === BalanceItemStatus.Canceled) {
334
+ return 0;
335
+ }
336
+ return this.priceWithVAT;
337
+ }
338
+
309
339
  /**
310
340
  * price minus pricePaid
311
341
  */
@@ -513,7 +543,7 @@ export class BalanceItem extends QueryableModel {
513
543
  await Database.update(query, params);
514
544
  }
515
545
 
516
- static async loadPayments(items: BalanceItem[]) {
546
+ static async loadPayments(items: (BalanceItem | { id: string })[]) {
517
547
  if (items.length == 0) {
518
548
  return { balanceItemPayments: [], payments: [] };
519
549
  }
@@ -535,7 +565,7 @@ export class BalanceItem extends QueryableModel {
535
565
  });
536
566
  }
537
567
 
538
- static async getStructureWithPayments(items: BalanceItem[]): Promise<BalanceItemWithPayments[]> {
568
+ static async getStructureWithPayments(items: (BalanceItem | BalanceItemStruct)[]): Promise<BalanceItemWithPayments[]> {
539
569
  if (items.length === 0) {
540
570
  return [];
541
571
  }
@@ -5,7 +5,7 @@ import { v4 as uuidv4 } from 'uuid';
5
5
 
6
6
  import { QueryableModel } from '@stamhoofd/sql';
7
7
  import { render } from '../helpers/Handlebars.js';
8
- import { MemberWithRegistrations, RegistrationWithMember } from './Member.js';
8
+ import { Member, MemberWithRegistrations, MemberWithUsersRegistrationsAndGroups, RegistrationWithMember } from './Member.js';
9
9
  import { Organization } from './Organization.js';
10
10
  import { Registration } from './Registration.js';
11
11
 
@@ -142,25 +142,27 @@ export class Document extends QueryableModel {
142
142
  }
143
143
 
144
144
  const Member = (await import('./Member.js')).Member;
145
- const [registration] = await Member.getRegistrationWithMembersByIDs([this.registrationId]);
145
+ const registration = await Registration.getByID(this.registrationId);
146
146
  if (!registration) {
147
147
  console.log('No registration when updating document', this.id);
148
148
  await template.updateDocumentWithAnswers(this, this.data.fieldAnswers);
149
149
  return;
150
150
  }
151
151
 
152
- await template.updateDocumentFor(this, registration);
152
+ const [loadedRegistration] = await Member.loadMembersForRegistrations([registration]);
153
+ await template.updateDocumentFor(this, loadedRegistration);
153
154
  }
154
155
 
155
- static async updateForMember(memberOrId: string | MemberWithRegistrations) {
156
+ static async updateForMember(memberOrId: string | Member | MemberWithRegistrations) {
156
157
  try {
157
158
  console.log('Updating documents for member', typeof memberOrId === 'string' ? memberOrId : memberOrId.id);
158
159
  const Member = (await import('./Member.js')).Member;
159
- const member = typeof memberOrId === 'string' ? await Member.getWithRegistrations(memberOrId) : memberOrId;
160
+ const member = typeof memberOrId === 'string' ? await Member.getByID(memberOrId) : memberOrId;
160
161
  if (member) {
161
- const organizationIds = Formatter.uniqueArray(member.registrations.map(r => r.organizationId));
162
+ const [loadedMember] = await Member.loadRegistrations([member]);
163
+ const organizationIds = Formatter.uniqueArray(loadedMember.registrations.map(r => r.organizationId));
162
164
  for (const organizationId of organizationIds) {
163
- await this.updateForRegistrations(member.registrations.filter(r => r.registeredAt && r.deactivatedAt === null && r.organizationId === organizationId).map(r => r.id), organizationId);
165
+ await this.updateForRegistrations(loadedMember.registrations.filter(r => r.registeredAt && r.deactivatedAt === null && r.organizationId === organizationId).map(r => r.id), organizationId);
164
166
  }
165
167
  }
166
168
  }
@@ -198,7 +200,7 @@ export class Document extends QueryableModel {
198
200
  }
199
201
  }
200
202
 
201
- static async updateForRegistrations(registrationIds: string[], organizationId: string) {
203
+ static async updateForRegistrations(registrationIds: string[] | Registration[], organizationId: string) {
202
204
  if (!registrationIds.length) {
203
205
  return;
204
206
  }
@@ -210,10 +212,11 @@ export class Document extends QueryableModel {
210
212
 
211
213
  if (templates.length) {
212
214
  const Member = (await import('./Member.js')).Member;
213
- const registrations = await Member.getRegistrationWithMembersByIDs(registrationIds);
215
+ const registrations = registrationIds.length === 0 || typeof registrationIds[0] !== 'string' ? (registrationIds as Registration[]) : await Member.getRegistrationWithMembersByIDs(registrationIds as string[]);
216
+ const loadedRegistrations = await Member.loadMembersForRegistrations(registrations);
214
217
 
215
218
  for (const template of templates) {
216
- await template.updateForRegistrations(registrations);
219
+ await template.updateForRegistrations(loadedRegistrations);
217
220
  }
218
221
  }
219
222
  }
@@ -2,7 +2,7 @@ import { column } from '@simonbackx/simple-database';
2
2
  import { isSimpleError, isSimpleErrors, SimpleError } from '@simonbackx/simple-errors';
3
3
  import { QueueHandler } from '@stamhoofd/queues';
4
4
  import { BalanceItemStatus, DocumentData, DocumentPrivateSettings, DocumentSettings, DocumentStatus, DocumentTemplatePrivate, GroupType, NationalRegisterNumberOptOut, Parent, RecordAddressAnswer, RecordAnswer, RecordAnswerDecoder, RecordDateAnswer, RecordPriceAnswer, RecordSettings, RecordTextAnswer, RecordType } from '@stamhoofd/structures';
5
- import { Sorter } from '@stamhoofd/utility';
5
+ import { Formatter, Sorter } from '@stamhoofd/utility';
6
6
  import { v4 as uuidv4 } from 'uuid';
7
7
 
8
8
  import { QueryableModel } from '@stamhoofd/sql';
@@ -89,6 +89,18 @@ export class DocumentTemplate extends QueryableModel {
89
89
  return DocumentTemplatePrivate.create(this);
90
90
  }
91
91
 
92
+ /**
93
+ * Still do an update when answers are locked
94
+ */
95
+ async updateAnswers(document: Document) {
96
+ // Add global answers (same for each document)
97
+ for (const answer of this.settings.fieldAnswers.values()) {
98
+ // todo: check duplicate
99
+ answer.reviewedAt = null;
100
+ document.data.fieldAnswers.set(answer.settings.id, answer);
101
+ }
102
+ }
103
+
92
104
  /**
93
105
  * Returns the default answers for a given registration
94
106
  */
@@ -96,7 +108,7 @@ export class DocumentTemplate extends QueryableModel {
96
108
  const fieldAnswers = new Map<string, RecordAnswer>();
97
109
  let missingData = false;
98
110
 
99
- const group = await Group.getByID(registration.groupId);
111
+ const group = 'group' in registration ? registration.group as Group : await Group.getByID(registration.groupId);
100
112
  const { items: balanceItems, payments } = await BalanceItem.getForRegistration(registration.id, this.organizationId);
101
113
 
102
114
  const paidAtDates = payments.flatMap(p => p.paidAt ? [p.paidAt?.getTime()] : []);
@@ -372,11 +384,11 @@ export class DocumentTemplate extends QueryableModel {
372
384
  }
373
385
  }
374
386
 
375
- // Add global answers (same for each document)
376
- for (const answer of this.settings.fieldAnswers.values()) {
377
- // todo: check duplicate
378
- answer.reviewedAt = null;
379
- fieldAnswers.set(answer.settings.id, answer);
387
+ // Add other default data
388
+ for (const key in defaultData) {
389
+ if (defaultData[key] && defaultData[key].settings.id === key && !fieldAnswers.get(key)) {
390
+ fieldAnswers.set(key, defaultData[key]);
391
+ }
380
392
  }
381
393
 
382
394
  // Add group based answers (same for each group)
@@ -386,11 +398,11 @@ export class DocumentTemplate extends QueryableModel {
386
398
  fieldAnswers.set(answer.settings.id, answer);
387
399
  }
388
400
 
389
- // Add other default data
390
- for (const key in defaultData) {
391
- if (defaultData[key] && defaultData[key].settings.id === key && !fieldAnswers.get(key)) {
392
- fieldAnswers.set(key, defaultData[key]);
393
- }
401
+ // Add global answers (same for each document)
402
+ for (const answer of this.settings.fieldAnswers.values()) {
403
+ // todo: check duplicate
404
+ answer.reviewedAt = null;
405
+ fieldAnswers.set(answer.settings.id, answer);
394
406
  }
395
407
 
396
408
  // Verify answers
@@ -421,9 +433,20 @@ export class DocumentTemplate extends QueryableModel {
421
433
  const existingDocuments = await Document.where({ templateId: this.id, registrationId: { sign: 'IN', value: registrations.map(r => r.id) } });
422
434
  const documents: Document[] = [];
423
435
 
436
+ const includedRegistrations = registrations.filter(r => this.checkRegistrationIncluded(r));
437
+
438
+ // Load groups
439
+ const groupIds = Formatter.uniqueArray(includedRegistrations.map(r => r.groupId));
440
+ const groups = await Group.getByIDs(...groupIds);
441
+
424
442
  for (const registration of registrations) {
443
+ const group = groups.find(g => g.id === registration.groupId);
444
+ if (group) {
445
+ registration.setRelation(Registration.group, group);
446
+ }
425
447
  documents.push(...await this.updateForRegistration(registration, existingDocuments.filter(d => d.registrationId === registration.id)));
426
448
  }
449
+
427
450
  return documents;
428
451
  }
429
452
 
@@ -447,7 +470,7 @@ export class DocumentTemplate extends QueryableModel {
447
470
  return [];
448
471
  }
449
472
 
450
- const group = await Group.getByID(registration.groupId);
473
+ const group = 'group' in registration ? registration.group as Group : await Group.getByID(registration.groupId);
451
474
  const description = `${registration.member.details.name}, ${group ? group.settings.name.toString() : ''}${group && group.settings.period && group.type === GroupType.Membership ? ' ' + group.settings.period?.nameShort : ''}`;
452
475
 
453
476
  if (existingDocuments.length > 0) {
@@ -561,6 +584,7 @@ export class DocumentTemplate extends QueryableModel {
561
584
  const documents = await Document.where({ templateId: this.id });
562
585
  for (const document of documents) {
563
586
  abort.throwIfAborted();
587
+ await this.updateAnswers(document); // Only update global data
564
588
  if (document.status === DocumentStatus.Draft || document.status === DocumentStatus.Published) {
565
589
  document.status = this.status;
566
590
  await document.save();
@@ -1,12 +1,11 @@
1
- import { column, Database, ManyToOneRelation, OneToManyRelation } from '@simonbackx/simple-database';
1
+ import { column, Database, ManyToOneRelation } from '@simonbackx/simple-database';
2
2
  import { GroupCategory, GroupPrivateSettings, GroupSettings, GroupStatus, Group as GroupStruct, GroupType, StockReservation } from '@stamhoofd/structures';
3
3
  import { v4 as uuidv4 } from 'uuid';
4
4
 
5
5
  import { ArrayDecoder } from '@simonbackx/simple-encoding';
6
6
  import { QueueHandler } from '@stamhoofd/queues';
7
- import { QueryableModel } from '@stamhoofd/sql';
8
- import { Formatter } from '@stamhoofd/utility';
9
- import { Member, MemberWithRegistrations, OrganizationRegistrationPeriod, Payment, Registration, User } from './index.js';
7
+ import { ModelCache, QueryableModel } from '@stamhoofd/sql';
8
+ import { Member, OrganizationRegistrationPeriod, Payment, Registration, User } from './index.js';
10
9
 
11
10
  if (Member === undefined) {
12
11
  throw new Error('Import Member is undefined');
@@ -23,6 +22,7 @@ if (Registration === undefined) {
23
22
 
24
23
  export class Group extends QueryableModel {
25
24
  static table = 'groups';
25
+ // static cache = new ModelCache<Group>();
26
26
 
27
27
  @column({
28
28
  primary: true, type: 'string', beforeSave(value) {
@@ -135,73 +135,6 @@ export class Group extends QueryableModel {
135
135
  return [...map.values()];
136
136
  }
137
137
 
138
- /**
139
- * Fetch all members with their corresponding (valid) registrations, users
140
- */
141
- async getMembersWithRegistration(waitingList = false, cycleOffset = 0): Promise<MemberWithRegistrations[]> {
142
- let query = `SELECT ${Member.getDefaultSelect()}, ${Registration.getDefaultSelect()}, ${User.getDefaultSelect()} from \`${Member.table}\`\n`;
143
-
144
- query += `JOIN \`${Registration.table}\` ON \`${Registration.table}\`.\`${Member.registrations.foreignKey}\` = \`${Member.table}\`.\`${Member.primary.name}\` AND (\`${Registration.table}\`.\`registeredAt\` is not null OR \`${Registration.table}\`.\`waitingList\` = 1)\n`;
145
-
146
- if (waitingList) {
147
- query += `JOIN \`${Registration.table}\` as reg_filter ON reg_filter.\`${Member.registrations.foreignKey}\` = \`${Member.table}\`.\`${Member.primary.name}\` AND reg_filter.\`waitingList\` = 1\n`;
148
- }
149
- else {
150
- query += `JOIN \`${Registration.table}\` as reg_filter ON reg_filter.\`${Member.registrations.foreignKey}\` = \`${Member.table}\`.\`${Member.primary.name}\` AND reg_filter.\`waitingList\` = 0 AND reg_filter.\`registeredAt\` is not null\n`;
151
- }
152
-
153
- query += Member.users.joinQuery(Member.table, User.table) + '\n';
154
-
155
- // We do an extra join because we also need to get the other registrations of each member (only one regitration has to match the query)
156
- query += `where reg_filter.\`groupId\` = ? AND reg_filter.\`cycle\` = ?`;
157
-
158
- const [results] = await Database.select(query, [this.id, this.cycle - cycleOffset]);
159
- const members: MemberWithRegistrations[] = [];
160
-
161
- const groupIds = results.map(r => r[Registration.table]?.groupId).filter(id => id) as string[];
162
- const groups = await Group.getByIDs(...Formatter.uniqueArray(groupIds));
163
-
164
- for (const row of results) {
165
- const foundMember = Member.fromRow(row[Member.table]);
166
- if (!foundMember) {
167
- throw new Error('Expected member in every row');
168
- }
169
- const _f = foundMember.setManyRelation(Member.registrations as unknown as OneToManyRelation<'registrations', Member, Registration & { group: Group }>, []).setManyRelation(Member.users, []);
170
-
171
- // Seach if we already got this member?
172
- const existingMember = members.find(m => m.id == _f.id);
173
-
174
- const member: MemberWithRegistrations = (existingMember ?? _f);
175
- if (!existingMember) {
176
- members.push(member);
177
- }
178
-
179
- // Check if we have a registration with a payment
180
- const registration = Registration.fromRow(row[Registration.table]);
181
- if (registration) {
182
- // Check if we already have this registration
183
- if (!member.registrations.find(r => r.id == registration.id)) {
184
- const group = groups.find(g => g.id == registration.groupId);
185
- if (!group) {
186
- throw new Error('Expected group');
187
- }
188
- member.registrations.push(registration.setRelation(Registration.group, group));
189
- }
190
- }
191
-
192
- // Check if we have a user
193
- const user = User.fromRow(row[User.table]);
194
- if (user) {
195
- // Check if we already have this registration
196
- if (!member.users.find(r => r.id == user.id)) {
197
- member.users.push(user);
198
- }
199
- }
200
- }
201
-
202
- return members;
203
- }
204
-
205
138
  /**
206
139
  * @deprecated
207
140
  */
@@ -153,63 +153,6 @@ export class Invoice extends QueryableModel {
153
153
  })
154
154
  updatedAt: Date;
155
155
 
156
- static async createFrom(organization: { id: string }, struct: InvoiceStruct) {
157
- const model = new Invoice();
158
- model.customer = struct.customer;
159
- model.seller = struct.seller;
160
- model.organizationId = organization.id;
161
- model.payingOrganizationId = struct.payingOrganizationId;
162
-
163
- model.payableRoundingAmount = struct.payableRoundingAmount;
164
- model.VATTotal = struct.VATTotal;
165
- model.VATTotalAmount = struct.VATTotalAmount;
166
- model.totalWithoutVAT = struct.totalWithoutVAT;
167
- model.totalWithVAT = struct.totalWithVAT;
168
- model.totalBalanceInvoicedAmount = struct.totalBalanceInvoicedAmount;
169
-
170
- model.ipAddress = struct.ipAddress;
171
- model.userAgent = struct.userAgent;
172
-
173
- model.stripeAccountId = struct.stripeAccountId;
174
- model.reference = struct.reference;
175
-
176
- model.negativeInvoiceId = struct.negativeInvoiceId;
177
-
178
- await model.save();
179
-
180
- // Create balances
181
- try {
182
- for (const item of struct.items) {
183
- const invoiced = new InvoicedBalanceItem();
184
- invoiced.invoiceId = model.id;
185
- invoiced.organizationId = model.organizationId;
186
- invoiced.balanceItemId = item.balanceItemId;
187
-
188
- invoiced.VATExcempt = item.VATExcempt;
189
- invoiced.VATPercentage = item.VATPercentage;
190
- invoiced.VATIncluded = item.VATIncluded;
191
-
192
- invoiced.unitPrice = item.unitPrice;
193
- invoiced.quantity = item.quantity;
194
-
195
- invoiced.balanceInvoicedAmount = item.balanceInvoicedAmount;
196
-
197
- invoiced.totalWithoutVAT = item.totalWithoutVAT;
198
-
199
- await invoiced.save();
200
- }
201
- }
202
- catch (e) {
203
- try {
204
- await model.delete();
205
- }
206
- catch (ee) {
207
- console.error('Error while trying to delete invoice because of fail save', ee, 'Deleting because of error', e);
208
- }
209
- throw e;
210
- }
211
- }
212
-
213
156
  static async loadBalanceItems(invoices: Invoice[]) {
214
157
  if (invoices.length === 0) {
215
158
  return { invoicedBalanceItems: [] };