@stamhoofd/models 2.62.0 → 2.64.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 (87) hide show
  1. package/dist/src/migrations/1605262045-import-postcodes.d.ts +1 -1
  2. package/dist/src/migrations/1605262045-import-postcodes.js +1 -4
  3. package/dist/src/migrations/1733909398-balance-items-due-at.sql +2 -0
  4. package/dist/src/migrations/1733909399-recalculate-at.sql +3 -0
  5. package/dist/src/migrations/1733994454-balance-item-price-open.sql +2 -0
  6. package/dist/src/migrations/1734084689-payment-type.sql +2 -0
  7. package/dist/src/migrations/1734084690-move-payment-column-order.sql +2 -0
  8. package/dist/src/migrations/1734084691-fill-payment-type-refunds.sql +1 -0
  9. package/dist/src/migrations/1734084692-fill-payment-type-reallocations.sql +15 -0
  10. package/dist/src/migrations/1734429094-registration-trial-until.sql +3 -0
  11. package/dist/src/migrations/1734429095-membership-trial-until.sql +2 -0
  12. package/dist/src/migrations/1734535120-registration-period-previous-period-id.sql +3 -0
  13. package/dist/src/migrations/1734535121-platform-previous-period-id.sql +3 -0
  14. package/dist/src/migrations/1734626607-cached-balance-amount-open.sql +2 -0
  15. package/dist/src/migrations/1734698906-cached-balance-amount-paid.sql +2 -0
  16. package/dist/src/models/BalanceItem.d.ts +18 -5
  17. package/dist/src/models/BalanceItem.d.ts.map +1 -1
  18. package/dist/src/models/BalanceItem.js +72 -70
  19. package/dist/src/models/BalanceItem.js.map +1 -1
  20. package/dist/src/models/BalanceItemPayment.d.ts +5 -0
  21. package/dist/src/models/BalanceItemPayment.d.ts.map +1 -1
  22. package/dist/src/models/BalanceItemPayment.js +15 -0
  23. package/dist/src/models/BalanceItemPayment.js.map +1 -1
  24. package/dist/src/models/CachedBalance.d.ts +13 -2
  25. package/dist/src/models/CachedBalance.d.ts.map +1 -1
  26. package/dist/src/models/CachedBalance.js +120 -13
  27. package/dist/src/models/CachedBalance.js.map +1 -1
  28. package/dist/src/models/DocumentTemplate.d.ts.map +1 -1
  29. package/dist/src/models/DocumentTemplate.js +37 -10
  30. package/dist/src/models/DocumentTemplate.js.map +1 -1
  31. package/dist/src/models/Member.d.ts +3 -7
  32. package/dist/src/models/Member.d.ts.map +1 -1
  33. package/dist/src/models/Member.js +2 -41
  34. package/dist/src/models/Member.js.map +1 -1
  35. package/dist/src/models/MemberPlatformMembership.d.ts +10 -1
  36. package/dist/src/models/MemberPlatformMembership.d.ts.map +1 -1
  37. package/dist/src/models/MemberPlatformMembership.js +79 -5
  38. package/dist/src/models/MemberPlatformMembership.js.map +1 -1
  39. package/dist/src/models/MergedMember.d.ts +1 -1
  40. package/dist/src/models/MergedMember.js +1 -1
  41. package/dist/src/models/Order.d.ts +1 -0
  42. package/dist/src/models/Order.d.ts.map +1 -1
  43. package/dist/src/models/Order.js +6 -0
  44. package/dist/src/models/Order.js.map +1 -1
  45. package/dist/src/models/Payment.d.ts +11 -1
  46. package/dist/src/models/Payment.d.ts.map +1 -1
  47. package/dist/src/models/Payment.js +13 -0
  48. package/dist/src/models/Payment.js.map +1 -1
  49. package/dist/src/models/Platform.d.ts +2 -0
  50. package/dist/src/models/Platform.d.ts.map +1 -1
  51. package/dist/src/models/Platform.js +9 -1
  52. package/dist/src/models/Platform.js.map +1 -1
  53. package/dist/src/models/Registration.d.ts +17 -5
  54. package/dist/src/models/Registration.d.ts.map +1 -1
  55. package/dist/src/models/Registration.js +23 -34
  56. package/dist/src/models/Registration.js.map +1 -1
  57. package/dist/src/models/RegistrationPeriod.d.ts +7 -0
  58. package/dist/src/models/RegistrationPeriod.d.ts.map +1 -1
  59. package/dist/src/models/RegistrationPeriod.js +36 -0
  60. package/dist/src/models/RegistrationPeriod.js.map +1 -1
  61. package/package.json +2 -2
  62. package/src/migrations/1605262045-import-postcodes.ts +2 -4
  63. package/src/migrations/1733909398-balance-items-due-at.sql +2 -0
  64. package/src/migrations/1733909399-recalculate-at.sql +3 -0
  65. package/src/migrations/1733994454-balance-item-price-open.sql +2 -0
  66. package/src/migrations/1734084689-payment-type.sql +2 -0
  67. package/src/migrations/1734084690-move-payment-column-order.sql +2 -0
  68. package/src/migrations/1734084691-fill-payment-type-refunds.sql +1 -0
  69. package/src/migrations/1734084692-fill-payment-type-reallocations.sql +15 -0
  70. package/src/migrations/1734429094-registration-trial-until.sql +3 -0
  71. package/src/migrations/1734429095-membership-trial-until.sql +2 -0
  72. package/src/migrations/1734535120-registration-period-previous-period-id.sql +3 -0
  73. package/src/migrations/1734535121-platform-previous-period-id.sql +3 -0
  74. package/src/migrations/1734626607-cached-balance-amount-open.sql +2 -0
  75. package/src/migrations/1734698906-cached-balance-amount-paid.sql +2 -0
  76. package/src/models/BalanceItem.ts +78 -86
  77. package/src/models/BalanceItemPayment.ts +20 -1
  78. package/src/models/CachedBalance.ts +178 -38
  79. package/src/models/DocumentTemplate.ts +40 -10
  80. package/src/models/Member.ts +2 -48
  81. package/src/models/MemberPlatformMembership.ts +92 -5
  82. package/src/models/MergedMember.ts +1 -1
  83. package/src/models/Order.ts +7 -0
  84. package/src/models/Payment.ts +13 -1
  85. package/src/models/Platform.ts +9 -1
  86. package/src/models/Registration.ts +21 -40
  87. package/src/models/RegistrationPeriod.ts +47 -2
@@ -3,7 +3,7 @@ import { Model } from '@simonbackx/simple-database';
3
3
  import { City } from '../models/addresses/City';
4
4
  export declare class Gemeente extends Model {
5
5
  static table: string;
6
- id: string;
6
+ id: number;
7
7
  postcode: string;
8
8
  gemeente: string;
9
9
  postcode_hoofdgemeente: string;
@@ -5,7 +5,6 @@ const tslib_1 = require("tslib");
5
5
  const simple_database_1 = require("@simonbackx/simple-database");
6
6
  const simple_database_2 = require("@simonbackx/simple-database");
7
7
  const utility_1 = require("@stamhoofd/utility");
8
- const uuid_1 = require("uuid");
9
8
  const structures_1 = require("@stamhoofd/structures");
10
9
  const City_1 = require("../models/addresses/City");
11
10
  const PostalCode_1 = require("../models/addresses/PostalCode");
@@ -24,9 +23,7 @@ class Gemeente extends simple_database_2.Model {
24
23
  exports.Gemeente = Gemeente;
25
24
  tslib_1.__decorate([
26
25
  (0, simple_database_2.column)({
27
- primary: true, type: 'string', beforeSave(value) {
28
- return value ?? (0, uuid_1.v4)();
29
- },
26
+ primary: true, type: 'integer',
30
27
  })
31
28
  ], Gemeente.prototype, "id", void 0);
32
29
  tslib_1.__decorate([
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `balance_items`
2
+ ADD COLUMN `dueAt` datetime NULL;
@@ -0,0 +1,3 @@
1
+ ALTER TABLE `cached_outstanding_balances`
2
+ ADD COLUMN `nextDueAt` datetime NULL AFTER `amountPending`,
3
+ ADD INDEX `nextDueAt` (`nextDueAt`) USING BTREE;
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `balance_items`
2
+ ADD COLUMN `priceOpen` int NOT NULL DEFAULT '0' AFTER `pricePending`;
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `payments`
2
+ ADD COLUMN `type` varchar(36) NOT NULL DEFAULT 'Payment' AFTER `id`;
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `payments`
2
+ CHANGE `paidAt` `paidAt` datetime NULL AFTER `price`;
@@ -0,0 +1 @@
1
+ UPDATE `payments` set `type` = 'Refund' where `price` < 0;
@@ -0,0 +1,15 @@
1
+ UPDATE payments
2
+ SET
3
+ `type` = 'Reallocation'
4
+ WHERE
5
+ price = 0
6
+ AND method = 'Unknown'
7
+ AND EXISTS (
8
+ SELECT
9
+ *
10
+ FROM
11
+ balance_item_payments
12
+ WHERE
13
+ balance_item_payments.paymentId = payments.id
14
+ AND balance_item_payments.price < 0
15
+ );
@@ -0,0 +1,3 @@
1
+ ALTER TABLE `registrations`
2
+ ADD COLUMN `trialUntil` datetime NULL AFTER `registeredAt`,
3
+ ADD COLUMN `startDate` datetime NULL AFTER `registeredAt`;
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `member_platform_memberships`
2
+ ADD COLUMN `trialUntil` datetime NULL AFTER `startDate`;
@@ -0,0 +1,3 @@
1
+ ALTER TABLE `registration_periods`
2
+ ADD COLUMN `previousPeriodId` varchar(36) NULL,
3
+ ADD FOREIGN KEY (`previousPeriodId`) REFERENCES `registration_periods` (`id`) ON UPDATE CASCADE ON DELETE SET NULL;
@@ -0,0 +1,3 @@
1
+ ALTER TABLE `platform`
2
+ ADD COLUMN `previousPeriodId` varchar(36) NULL AFTER `periodId`,
3
+ ADD FOREIGN KEY (`previousPeriodId`) REFERENCES `registration_periods` (`id`) ON UPDATE CASCADE ON DELETE SET NULL;
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `cached_outstanding_balances`
2
+ CHANGE `amount` `amountOpen` int NOT NULL DEFAULT '0';
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `cached_outstanding_balances`
2
+ ADD COLUMN `amountPaid` int NOT NULL DEFAULT '0' AFTER `organizationId`;
@@ -1,5 +1,5 @@
1
1
  import { Model } from '@simonbackx/simple-database';
2
- import { BalanceItemRelation, BalanceItemRelationType, BalanceItemStatus, BalanceItemType, BalanceItemWithPayments, BalanceItemWithPrivatePayments } from '@stamhoofd/structures';
2
+ import { BalanceItemRelation, BalanceItemRelationType, BalanceItemStatus, BalanceItem as BalanceItemStruct, BalanceItemType, BalanceItemWithPayments, BalanceItemWithPrivatePayments } from '@stamhoofd/structures';
3
3
  import { SQLSelect } from '@stamhoofd/sql';
4
4
  import { Payment } from './';
5
5
  /**
@@ -45,19 +45,31 @@ export declare class BalanceItem extends Model {
45
45
  * Cached value, for optimizations
46
46
  */
47
47
  pricePending: number;
48
+ /**
49
+ * Cached value, for optimizations
50
+ */
51
+ priceOpen: number;
52
+ /**
53
+ * todo: deprecate ('pending' and 'paid') + 'hidden' status and replace with 'due' + 'hidden'
54
+ * -> maybe add 'due' (due if dueAt is null or <= now), 'hidden' (never due), 'future' (= not due until dueAt - but not possible to pay earlier)
55
+ */
48
56
  status: BalanceItemStatus;
57
+ /**
58
+ * In case the balance item doesn't have to be paid immediately, we can set a due date.
59
+ * When the due date is reached, it is set to null and the cached balance is updated.
60
+ */
61
+ dueAt: Date | null;
49
62
  createdAt: Date;
50
63
  updatedAt: Date;
51
64
  get price(): number;
52
- get priceOpen(): number;
53
- updateStatus(): void;
65
+ get calculatedPriceOpen(): number;
54
66
  static deleteItems(items: BalanceItem[]): Promise<void>;
55
67
  static reactivateItems(items: BalanceItem[]): Promise<void>;
56
68
  static undoForDeletedOrders(orderIds: string[]): Promise<void>;
57
69
  static deleteForDeletedOrders(orderIds: string[]): Promise<void>;
58
70
  static deleteForDeletedMember(memberId: string): Promise<void>;
59
71
  static deleteForDeletedRegistration(registrationId: string): Promise<void>;
60
- static getForRegistration(registrationId: string): Promise<{
72
+ static getForRegistration(registrationId: string, organizationId?: string): Promise<{
61
73
  payments: Payment[];
62
74
  balanceItemPayments: import("./BalanceItemPayment").BalanceItemPayment[];
63
75
  items: BalanceItem[];
@@ -72,13 +84,14 @@ export declare class BalanceItem extends Model {
72
84
  */
73
85
  static updatePricePaid(balanceItemIds: string[] | 'all'): Promise<void>;
74
86
  /**
75
- * Call this after updating the pricePaid
87
+ * @deprecated
76
88
  */
77
89
  static updatePricePending(balanceItemIds: string[] | 'all'): Promise<void>;
78
90
  static loadPayments(items: BalanceItem[]): Promise<{
79
91
  payments: Payment[];
80
92
  balanceItemPayments: import("./BalanceItemPayment").BalanceItemPayment[];
81
93
  }>;
94
+ getStructure(): BalanceItemStruct;
82
95
  static getStructureWithPayments(items: BalanceItem[]): Promise<BalanceItemWithPayments[]>;
83
96
  static getStructureWithPrivatePayments(items: BalanceItem[]): Promise<BalanceItemWithPrivatePayments[]>;
84
97
  static balanceItemsForUsersAndMembers(organizationId: string | null, userIds: string[], memberIds: string[]): Promise<BalanceItem[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"BalanceItem.d.ts","sourceRoot":"","sources":["../../../src/models/BalanceItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAA0B,MAAM,6BAA6B,CAAC;AAC9F,OAAO,EAAuE,mBAAmB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,eAAe,EAAE,uBAAuB,EAAE,8BAA8B,EAAyD,MAAM,uBAAuB,CAAC;AAK9S,OAAO,EAAO,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAA0B,OAAO,EAAW,MAAM,IAAI,CAAC;AAG9D;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAClC,MAAM,CAAC,KAAK,SAAmB;IAO/B,EAAE,EAAG,MAAM,CAAC;IAKZ,cAAc,EAAE,MAAM,CAAC;IAKvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG7B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE3C;;OAEG;IAEH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAErC;;OAEG;IAEH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE9B;;;;OAIG;IAEH,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG7C,IAAI,kBAAyB;IAG7B,SAAS,EAAE,GAAG,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAa;IAGzE,WAAW,SAAM;IAEjB;;OAEG;IAEH,MAAM,SAAK;IAEX;;OAEG;IAEH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IAEH,SAAS,SAAK;IAEd;;OAEG;IAEH,YAAY,SAAK;IAGjB,MAAM,oBAA6B;IAYnC,SAAS,EAAE,IAAI,CAAC;IAUhB,SAAS,EAAE,IAAI,CAAC;IAEhB,IAAI,KAAK,WAER;IAED,IAAI,SAAS,WAEZ;IAED,YAAY;WAIC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE;WAyChC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE;WAepC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE;WAQvC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE;WAQzC,sBAAsB,CAAC,QAAQ,EAAE,MAAM;WAKvC,4BAA4B,CAAC,cAAc,EAAE,MAAM;WAKnD,kBAAkB,CAAC,cAAc,EAAE,MAAM;;;;;IAQtD;;;OAGG;WACU,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE;IAuCnD;;OAEG;WACU,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,KAAK;IA6C7D;;OAEG;WACU,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,KAAK;WAyCnD,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE;;;;WAcjC,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;WAuBlF,+BAA+B,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,8BAA8B,EAAE,CAAC;WAuBhG,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;WAoD7H,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAOxF;;OAEG;IACH,MAAM,CAAC,MAAM;CAchB"}
1
+ {"version":3,"file":"BalanceItem.d.ts","sourceRoot":"","sources":["../../../src/models/BalanceItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAA0B,MAAM,6BAA6B,CAAC;AAC9F,OAAO,EAAuE,mBAAmB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,WAAW,IAAI,iBAAiB,EAAE,eAAe,EAAE,uBAAuB,EAAE,8BAA8B,EAA4C,MAAM,uBAAuB,CAAC;AAKnU,OAAO,EAAO,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAY,OAAO,EAAE,MAAM,IAAI,CAAC;AAGvC;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAClC,MAAM,CAAC,KAAK,SAAmB;IAO/B,EAAE,EAAG,MAAM,CAAC;IAKZ,cAAc,EAAE,MAAM,CAAC;IAKvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG7B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE3C;;OAEG;IAEH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAErC;;OAEG;IAEH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE9B;;;;OAIG;IAEH,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG7C,IAAI,kBAAyB;IAG7B,SAAS,EAAE,GAAG,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAa;IAGzE,WAAW,SAAM;IAEjB;;OAEG;IAEH,MAAM,SAAK;IAEX;;OAEG;IAEH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IAEH,SAAS,SAAK;IAEd;;OAEG;IAEH,YAAY,SAAK;IAEjB;;OAEG;IAQH,SAAS,SAAK;IAEd;;;OAGG;IAEH,MAAM,oBAAyB;IAE/B;;;OAGG;IAEH,KAAK,EAAE,IAAI,GAAG,IAAI,CAAQ;IAY1B,SAAS,EAAE,IAAI,CAAC;IAUhB,SAAS,EAAE,IAAI,CAAC;IAEhB,IAAI,KAAK,WAER;IAED,IAAI,mBAAmB,WAKtB;WAEY,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE;WA8BhC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE;WAepC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE;WAQvC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE;WAQzC,sBAAsB,CAAC,QAAQ,EAAE,MAAM;WAKvC,4BAA4B,CAAC,cAAc,EAAE,MAAM;WAKnD,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;;;;;IAkB/E;;;OAGG;WACU,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE;IA2BnD;;OAEG;WACU,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,KAAK;IAyD7D;;OAEG;WACU,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,KAAK;WAInD,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE;;;;IAgB9C,YAAY;WAMC,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;WAuBlF,+BAA+B,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,8BAA8B,EAAE,CAAC;WAuBhG,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;WAoD7H,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAOxF;;OAEG;IACH,MAAM,CAAC,MAAM;CAchB"}
@@ -55,18 +55,31 @@ class BalanceItem extends simple_database_1.Model {
55
55
  * Cached value, for optimizations
56
56
  */
57
57
  pricePending = 0;
58
- status = structures_1.BalanceItemStatus.Pending;
58
+ /**
59
+ * Cached value, for optimizations
60
+ */
61
+ priceOpen = 0;
62
+ /**
63
+ * todo: deprecate ('pending' and 'paid') + 'hidden' status and replace with 'due' + 'hidden'
64
+ * -> maybe add 'due' (due if dueAt is null or <= now), 'hidden' (never due), 'future' (= not due until dueAt - but not possible to pay earlier)
65
+ */
66
+ status = structures_1.BalanceItemStatus.Due;
67
+ /**
68
+ * In case the balance item doesn't have to be paid immediately, we can set a due date.
69
+ * When the due date is reached, it is set to null and the cached balance is updated.
70
+ */
71
+ dueAt = null;
59
72
  createdAt;
60
73
  updatedAt;
61
74
  get price() {
62
75
  return this.unitPrice * this.amount;
63
76
  }
64
- get priceOpen() {
77
+ get calculatedPriceOpen() {
78
+ if (this.status !== structures_1.BalanceItemStatus.Due) {
79
+ return -this.pricePaid - this.pricePending;
80
+ }
65
81
  return this.price - this.pricePaid - this.pricePending;
66
82
  }
67
- updateStatus() {
68
- this.status = (this.pricePaid !== 0 || this.price === 0) && this.pricePaid >= this.price ? structures_1.BalanceItemStatus.Paid : (this.pricePaid !== 0 ? structures_1.BalanceItemStatus.Pending : (this.status === structures_1.BalanceItemStatus.Hidden ? structures_1.BalanceItemStatus.Hidden : structures_1.BalanceItemStatus.Pending));
69
- }
70
83
  static async deleteItems(items) {
71
84
  // Find depending items
72
85
  const dependingItemIds = utility_1.Formatter.uniqueArray(items.filter(i => !!i.dependingBalanceItemId).map(i => i.dependingBalanceItemId)).filter(id => !items.some(item => item.id === id));
@@ -75,26 +88,17 @@ class BalanceItem extends simple_database_1.Model {
75
88
  const dependingItems = await BalanceItem.getByIDs(...dependingItemIds);
76
89
  items = [...items, ...dependingItems];
77
90
  }
78
- const { balanceItemPayments } = await BalanceItem.loadPayments(items);
79
91
  // todo: in the future we could automatically delete payments that are not needed anymore and weren't paid yet -> to prevent leaving ghost payments
80
92
  // for now, an admin can manually cancel those payments
81
93
  let needsUpdate = false;
82
94
  // Set other items to zero (the balance item payments keep the real price)
83
95
  for (const item of items) {
84
- needsUpdate = true;
85
- // Don't change status of items that are already paid or are partially paid
86
- // Not using item.paidPrice, since this is cached
87
- const bip = balanceItemPayments.filter(p => p.balanceItemId === item.id);
88
- if (bip.length === 0) {
89
- // No payments associated with this item
90
- item.status = structures_1.BalanceItemStatus.Hidden;
91
- item.amount = 0;
92
- await item.save();
93
- }
94
- else {
95
- item.amount = 0;
96
- await item.save();
96
+ if (item.status !== structures_1.BalanceItemStatus.Due) {
97
+ continue;
97
98
  }
99
+ needsUpdate = true;
100
+ item.status = structures_1.BalanceItemStatus.Canceled;
101
+ await item.save();
98
102
  }
99
103
  if (needsUpdate) {
100
104
  await this.updateOutstanding(items);
@@ -104,7 +108,7 @@ class BalanceItem extends simple_database_1.Model {
104
108
  let needsUpdate = false;
105
109
  for (const item of items) {
106
110
  if (item.status === structures_1.BalanceItemStatus.Hidden) {
107
- item.status = structures_1.BalanceItemStatus.Pending;
111
+ item.status = structures_1.BalanceItemStatus.Due;
108
112
  needsUpdate = true;
109
113
  await item.save();
110
114
  }
@@ -135,8 +139,15 @@ class BalanceItem extends simple_database_1.Model {
135
139
  const items = await BalanceItem.where({ registrationId });
136
140
  await this.deleteItems(items);
137
141
  }
138
- static async getForRegistration(registrationId) {
139
- const items = await BalanceItem.where({ registrationId });
142
+ static async getForRegistration(registrationId, organizationId) {
143
+ let q = BalanceItem.select()
144
+ .where('registrationId', registrationId)
145
+ .whereNot('status', structures_1.BalanceItemStatus.Hidden);
146
+ if (organizationId) {
147
+ q = q.where('organizationId', organizationId);
148
+ }
149
+ const items = await q
150
+ .fetch();
140
151
  return {
141
152
  items,
142
153
  ...(await this.loadPayments(items)),
@@ -149,13 +160,6 @@ class BalanceItem extends simple_database_1.Model {
149
160
  static async updateOutstanding(items) {
150
161
  console.log('Update outstanding balance for', items.length, 'items');
151
162
  await BalanceItem.updatePricePaid(items.map(i => i.id));
152
- await BalanceItem.updatePricePending(items.map(i => i.id));
153
- // Deprecated: the member balances have moved to CachedBalance
154
- // Update outstanding amount of related members and registrations
155
- const memberIds = utility_1.Formatter.uniqueArray(items.map(p => p.memberId).filter(id => id !== null));
156
- const Member = (await Promise.resolve().then(() => tslib_1.__importStar(require('./Member')))).Member;
157
- await Member.updateOutstandingBalance(memberIds);
158
- const { Registration } = await Promise.resolve().then(() => tslib_1.__importStar(require('./Registration')));
159
163
  const organizationIds = utility_1.Formatter.uniqueArray(items.map(p => p.organizationId));
160
164
  for (const organizationId of organizationIds) {
161
165
  const filteredItems = items.filter(i => i.organizationId === organizationId);
@@ -166,8 +170,7 @@ class BalanceItem extends simple_database_1.Model {
166
170
  const organizationIds = utility_1.Formatter.uniqueArray(filteredItems.map(p => p.payingOrganizationId).filter(id => id !== null));
167
171
  await CachedBalance_1.CachedBalance.updateForOrganizations(organizationId, organizationIds);
168
172
  const registrationIds = utility_1.Formatter.uniqueArray(filteredItems.map(p => p.registrationId).filter(id => id !== null));
169
- // Deprecated: we'll need to move the outstanding balance of registrations to CachedBalance
170
- await Registration.updateOutstandingBalance(registrationIds, organizationId);
173
+ await CachedBalance_1.CachedBalance.updateForRegistrations(organizationId, registrationIds);
171
174
  if (registrationIds.length) {
172
175
  await _1.Document.updateForRegistrations(registrationIds, organizationId);
173
176
  }
@@ -177,7 +180,7 @@ class BalanceItem extends simple_database_1.Model {
177
180
  * Update the outstanding balance of multiple members in one go (or all members)
178
181
  */
179
182
  static async updatePricePaid(balanceItemIds) {
180
- if (balanceItemIds !== 'all' && balanceItemIds.length == 0) {
183
+ if (balanceItemIds !== 'all' && balanceItemIds.length === 0) {
181
184
  return;
182
185
  }
183
186
  const params = [];
@@ -186,11 +189,11 @@ class BalanceItem extends simple_database_1.Model {
186
189
  if (balanceItemIds !== 'all') {
187
190
  firstWhere = ` AND balanceItemId IN (?)`;
188
191
  params.push(balanceItemIds);
192
+ params.push(balanceItemIds);
189
193
  secondWhere = `WHERE balance_items.id IN (?)`;
190
194
  params.push(balanceItemIds);
191
195
  }
192
- // Note: we'll never mark a balance item as 'paid' via the database -> because we need to rigger the markPaid function manually, which will call the appropriate functions
193
- // this method will set the balance item to paid once, and only call the handlers once
196
+ // Note: this query only works in MySQL because of the SET assignment behaviour allowing to reference newly set values
194
197
  const query = `
195
198
  UPDATE
196
199
  balance_items
@@ -205,35 +208,7 @@ class BalanceItem extends simple_database_1.Model {
205
208
  payments.status = 'Succeeded'${firstWhere}
206
209
  GROUP BY
207
210
  balanceItemId
208
- ) i ON i.balanceItemId = balance_items.id
209
- SET balance_items.pricePaid = coalesce(i.price, 0), balance_items.status = (CASE
210
- WHEN balance_items.status = '${structures_1.BalanceItemStatus.Paid}' AND balance_items.pricePaid != 0 AND balance_items.pricePaid >= (balance_items.unitPrice * balance_items.amount) THEN '${structures_1.BalanceItemStatus.Paid}'
211
- WHEN balance_items.pricePaid != 0 THEN '${structures_1.BalanceItemStatus.Pending}'
212
- WHEN balance_items.status = '${structures_1.BalanceItemStatus.Hidden}' THEN '${structures_1.BalanceItemStatus.Hidden}'
213
- ELSE '${structures_1.BalanceItemStatus.Pending}'
214
- END)
215
- ${secondWhere}`;
216
- await simple_database_1.Database.update(query, params);
217
- }
218
- /**
219
- * Call this after updating the pricePaid
220
- */
221
- static async updatePricePending(balanceItemIds) {
222
- if (balanceItemIds !== 'all' && balanceItemIds.length == 0) {
223
- return;
224
- }
225
- const params = [];
226
- let firstWhere = '';
227
- let secondWhere = '';
228
- if (balanceItemIds !== 'all') {
229
- firstWhere = ` AND balanceItemId IN (?)`;
230
- params.push(balanceItemIds);
231
- secondWhere = `WHERE balance_items.id IN (?)`;
232
- params.push(balanceItemIds);
233
- }
234
- const query = `
235
- UPDATE
236
- balance_items
211
+ ) paid ON paid.balanceItemId = balance_items.id
237
212
  LEFT JOIN (
238
213
  SELECT
239
214
  balanceItemId,
@@ -245,26 +220,41 @@ class BalanceItem extends simple_database_1.Model {
245
220
  payments.status != 'Succeeded' AND payments.status != 'Failed'${firstWhere}
246
221
  GROUP BY
247
222
  balanceItemId
248
- ) i ON i.balanceItemId = balance_items.id
249
- SET balance_items.pricePending = LEAST(
250
- GREATEST(0, balance_items.unitPrice * balance_items.amount - balance_items.pricePaid),
251
- coalesce(i.price, 0)
252
- )
223
+ ) pending ON pending.balanceItemId = balance_items.id
224
+ SET balance_items.pricePaid = coalesce(paid.price, 0),
225
+ balance_items.pricePending = coalesce(pending.price, 0),
226
+ balance_items.priceOpen = (CASE
227
+ WHEN balance_items.status = '${structures_1.BalanceItemStatus.Due}' THEN (balance_items.unitPrice * balance_items.amount - balance_items.pricePaid - balance_items.pricePending)
228
+ ELSE (-balance_items.pricePaid - balance_items.pricePending)
229
+ END)
253
230
  ${secondWhere}`;
254
231
  await simple_database_1.Database.update(query, params);
255
232
  }
233
+ /**
234
+ * @deprecated
235
+ */
236
+ static async updatePricePending(balanceItemIds) {
237
+ // deprecated
238
+ }
256
239
  static async loadPayments(items) {
257
240
  if (items.length == 0) {
258
241
  return { balanceItemPayments: [], payments: [] };
259
242
  }
260
243
  // Load balance payment items
261
244
  const { BalanceItemPayment } = await Promise.resolve().then(() => tslib_1.__importStar(require('./BalanceItemPayment')));
262
- const balanceItemPayments = await BalanceItemPayment.where({ balanceItemId: { sign: 'IN', value: items.map(i => i.id) } });
245
+ const balanceItemPayments = await BalanceItemPayment.select()
246
+ .where('balanceItemId', items.map(i => i.id))
247
+ .fetch();
263
248
  const payments = await _1.Payment.getByIDs(...balanceItemPayments.map(p => p.paymentId));
264
249
  return { payments, balanceItemPayments };
265
250
  }
251
+ getStructure() {
252
+ return structures_1.BalanceItem.create({
253
+ ...this,
254
+ });
255
+ }
266
256
  static async getStructureWithPayments(items) {
267
- if (items.length == 0) {
257
+ if (items.length === 0) {
268
258
  return [];
269
259
  }
270
260
  const { payments, balanceItemPayments } = await BalanceItem.loadPayments(items);
@@ -415,9 +405,21 @@ tslib_1.__decorate([
415
405
  tslib_1.__decorate([
416
406
  (0, simple_database_1.column)({ type: 'integer' })
417
407
  ], BalanceItem.prototype, "pricePending", void 0);
408
+ tslib_1.__decorate([
409
+ (0, simple_database_1.column)({
410
+ type: 'integer',
411
+ beforeSave: function () {
412
+ return this.calculatedPriceOpen;
413
+ },
414
+ skipUpdate: true,
415
+ })
416
+ ], BalanceItem.prototype, "priceOpen", void 0);
418
417
  tslib_1.__decorate([
419
418
  (0, simple_database_1.column)({ type: 'string' })
420
419
  ], BalanceItem.prototype, "status", void 0);
420
+ tslib_1.__decorate([
421
+ (0, simple_database_1.column)({ type: 'datetime', nullable: true })
422
+ ], BalanceItem.prototype, "dueAt", void 0);
421
423
  tslib_1.__decorate([
422
424
  (0, simple_database_1.column)({
423
425
  type: 'datetime', beforeSave(old) {
@@ -1 +1 @@
1
- {"version":3,"file":"BalanceItem.js","sourceRoot":"","sources":["../../../src/models/BalanceItem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BalanceItem.js","sourceRoot":"","sources":["../../../src/models/BalanceItem.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { ManyToOneRelation, Model } from '@simonbackx/simple-database';
2
2
  import { BalanceItem, Payment } from './';
3
+ import { SQLSelect } from '@stamhoofd/sql';
3
4
  /**
4
5
  * Keeps track of all the created payments of a balance item, which contains the (tries) to pay a balance item.
5
6
  * It also keeps track of how much a given payment is split between multiple balance items, which makes it possible to pay a balance item partially.
@@ -18,5 +19,9 @@ export declare class BalanceItemPayment extends Model {
18
19
  updatedAt: Date;
19
20
  static balanceItem: ManyToOneRelation<"balanceItem", BalanceItem>;
20
21
  static payment: ManyToOneRelation<"payment", Payment>;
22
+ /**
23
+ * Experimental: needs to move to library
24
+ */
25
+ static select(): SQLSelect<BalanceItemPayment>;
21
26
  }
22
27
  //# sourceMappingURL=BalanceItemPayment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BalanceItemPayment.d.ts","sourceRoot":"","sources":["../../../src/models/BalanceItemPayment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,iBAAiB,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAG/E,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE1C;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,MAAM,CAAC,KAAK,SAA2B;IAOvC,EAAE,EAAG,MAAM,CAAC;IAGZ,cAAc,EAAE,MAAM,CAAC;IAGvB,SAAS,EAAE,MAAM,CAAC;IAGlB,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IAEH,KAAK,SAAK;IAYV,SAAS,EAAE,IAAI,CAAC;IAUhB,SAAS,EAAE,IAAI,CAAC;IAEhB,MAAM,CAAC,WAAW,gDAAqD;IACvE,MAAM,CAAC,OAAO,wCAA6C;CAC9D"}
1
+ {"version":3,"file":"BalanceItemPayment.d.ts","sourceRoot":"","sources":["../../../src/models/BalanceItemPayment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,iBAAiB,EAAE,KAAK,EAA0B,MAAM,6BAA6B,CAAC;AAGvG,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAO,MAAM,gBAAgB,CAAC;AAEhD;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,MAAM,CAAC,KAAK,SAA2B;IAOvC,EAAE,EAAG,MAAM,CAAC;IAGZ,cAAc,EAAE,MAAM,CAAC;IAGvB,SAAS,EAAE,MAAM,CAAC;IAGlB,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IAEH,KAAK,SAAK;IAYV,SAAS,EAAE,IAAI,CAAC;IAUhB,SAAS,EAAE,IAAI,CAAC;IAEhB,MAAM,CAAC,WAAW,gDAAqD;IACvE,MAAM,CAAC,OAAO,wCAA6C;IAE3D;;OAEG;IACH,MAAM,CAAC,MAAM;CAchB"}
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const simple_database_1 = require("@simonbackx/simple-database");
6
6
  const uuid_1 = require("uuid");
7
7
  const _1 = require("./");
8
+ const sql_1 = require("@stamhoofd/sql");
8
9
  /**
9
10
  * Keeps track of all the created payments of a balance item, which contains the (tries) to pay a balance item.
10
11
  * It also keeps track of how much a given payment is split between multiple balance items, which makes it possible to pay a balance item partially.
@@ -23,6 +24,20 @@ class BalanceItemPayment extends simple_database_1.Model {
23
24
  updatedAt;
24
25
  static balanceItem = new simple_database_1.ManyToOneRelation(_1.BalanceItem, 'balanceItem');
25
26
  static payment = new simple_database_1.ManyToOneRelation(_1.Payment, 'payment');
27
+ /**
28
+ * Experimental: needs to move to library
29
+ */
30
+ static select() {
31
+ const transformer = (row) => {
32
+ const d = this.fromRow(row[this.table]);
33
+ if (!d) {
34
+ throw new Error('EmailTemplate not found');
35
+ }
36
+ return d;
37
+ };
38
+ const select = new sql_1.SQLSelect(transformer, sql_1.SQL.wildcard());
39
+ return select.from(sql_1.SQL.table(this.table));
40
+ }
26
41
  }
27
42
  exports.BalanceItemPayment = BalanceItemPayment;
28
43
  tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"BalanceItemPayment.js","sourceRoot":"","sources":["../../../src/models/BalanceItemPayment.ts"],"names":[],"mappings":";;;;AAAA,iEAA+E;AAC/E,+BAAoC;AAEpC,yBAA0C;AAE1C;;;GAGG;AACH,MAAa,kBAAmB,SAAQ,uBAAK;IACzC,MAAM,CAAC,KAAK,GAAG,uBAAuB,CAAC;IAOvC,EAAE,CAAU;IAGZ,cAAc,CAAS;IAGvB,SAAS,CAAS;IAGlB,aAAa,CAAS;IAEtB;;OAEG;IAEH,KAAK,GAAG,CAAC,CAAC;IAYV,SAAS,CAAO;IAUhB,SAAS,CAAO;IAEhB,MAAM,CAAC,WAAW,GAAG,IAAI,mCAAiB,CAAC,cAAW,EAAE,aAAa,CAAC,CAAC;IACvE,MAAM,CAAC,OAAO,GAAG,IAAI,mCAAiB,CAAC,UAAO,EAAE,SAAS,CAAC,CAAC;;AAhD/D,gDAiDC;AAzCG;IALC,IAAA,wBAAM,EAAC;QACJ,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK;YAC3C,OAAO,KAAK,IAAI,IAAA,SAAM,GAAE,CAAC;QAC7B,CAAC;KACJ,CAAC;8CACU;AAGZ;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;0DACJ;AAGvB;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;qDACjD;AAGlB;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC,WAAW,EAAE,CAAC;yDACjD;AAMtB;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iDAClB;AAYV;IAVC,IAAA,wBAAM,EAAC;QACJ,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,GAAS;YAClC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACpB,OAAO,GAAG,CAAC;YACf,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;KACJ,CAAC;qDACc;AAUhB;IARC,IAAA,wBAAM,EAAC;QACJ,IAAI,EAAE,UAAU,EAAE,UAAU;YACxB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,UAAU,EAAE,IAAI;KACnB,CAAC;qDACc"}
1
+ {"version":3,"file":"BalanceItemPayment.js","sourceRoot":"","sources":["../../../src/models/BalanceItemPayment.ts"],"names":[],"mappings":";;;;AAAA,iEAAuG;AACvG,+BAAoC;AAEpC,yBAA0C;AAC1C,wCAAgD;AAEhD;;;GAGG;AACH,MAAa,kBAAmB,SAAQ,uBAAK;IACzC,MAAM,CAAC,KAAK,GAAG,uBAAuB,CAAC;IAOvC,EAAE,CAAU;IAGZ,cAAc,CAAS;IAGvB,SAAS,CAAS;IAGlB,aAAa,CAAS;IAEtB;;OAEG;IAEH,KAAK,GAAG,CAAC,CAAC;IAYV,SAAS,CAAO;IAUhB,SAAS,CAAO;IAEhB,MAAM,CAAC,WAAW,GAAG,IAAI,mCAAiB,CAAC,cAAW,EAAE,aAAa,CAAC,CAAC;IACvE,MAAM,CAAC,OAAO,GAAG,IAAI,mCAAiB,CAAC,UAAO,EAAE,SAAS,CAAC,CAAC;IAE3D;;OAEG;IACH,MAAM,CAAC,MAAM;QACT,MAAM,WAAW,GAAG,CAAC,GAA2B,EAAsB,EAAE;YACpE,MAAM,CAAC,GAAI,IAAiD,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAmC,CAAC;YAE/H,IAAI,CAAC,CAAC,EAAE,CAAC;gBACL,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC/C,CAAC;YAED,OAAO,CAAC,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,eAAS,CAAC,WAAW,EAAE,SAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,IAAI,CAAC,SAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC;;AAlEL,gDAmEC;AA3DG;IALC,IAAA,wBAAM,EAAC;QACJ,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK;YAC3C,OAAO,KAAK,IAAI,IAAA,SAAM,GAAE,CAAC;QAC7B,CAAC;KACJ,CAAC;8CACU;AAGZ;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;0DACJ;AAGvB;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;qDACjD;AAGlB;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC,WAAW,EAAE,CAAC;yDACjD;AAMtB;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iDAClB;AAYV;IAVC,IAAA,wBAAM,EAAC;QACJ,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,GAAS;YAClC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACpB,OAAO,GAAG,CAAC;YACf,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;KACJ,CAAC;qDACc;AAUhB;IARC,IAAA,wBAAM,EAAC;QACJ,IAAI,EAAE,UAAU,EAAE,UAAU;YACxB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,UAAU,EAAE,IAAI;KACnB,CAAC;qDACc"}
@@ -1,5 +1,5 @@
1
1
  import { Model } from '@simonbackx/simple-database';
2
- import { SQLSelect } from '@stamhoofd/sql';
2
+ import { SQLSelect, SQLWhere } from '@stamhoofd/sql';
3
3
  import { ReceivableBalanceType } from '@stamhoofd/structures';
4
4
  import { BalanceItem } from './BalanceItem';
5
5
  /**
@@ -17,22 +17,33 @@ export declare class CachedBalance extends Model {
17
17
  * user: all balance items with that user id, but without a member id
18
18
  */
19
19
  objectType: ReceivableBalanceType;
20
- amount: number;
20
+ amountPaid: number;
21
+ amountOpen: number;
22
+ /**
23
+ * The sum of unconfirmed payments
24
+ */
21
25
  amountPending: number;
26
+ /**
27
+ * This is the minimum `dueAt` that lies in the future of all **unpaid** balance items connected to this object.
28
+ */
29
+ nextDueAt: Date | null;
22
30
  createdAt: Date;
23
31
  updatedAt: Date;
24
32
  static getForObjects(objectIds: string[], limitOrganizationId?: string | null): Promise<CachedBalance[]>;
25
33
  static updateForObjects(organizationId: string, objectIds: string[], objectType: ReceivableBalanceType): Promise<void>;
26
34
  static balanceForObjects(organizationId: string, objectIds: string[], objectType: ReceivableBalanceType): Promise<BalanceItem[]>;
27
35
  private static fetchBalanceItems;
36
+ static whereNeedsUpdate(): SQLWhere;
28
37
  private static fetchForObjects;
29
38
  private static setForResults;
30
39
  static updateForOrganizations(organizationId: string, organizationIds: string[]): Promise<void>;
31
40
  static updateForMembers(organizationId: string, memberIds: string[]): Promise<void>;
41
+ static updateForRegistrations(organizationId: string, registrationIds: string[]): Promise<void>;
32
42
  static updateForUsers(organizationId: string, userIds: string[]): Promise<void>;
33
43
  static balanceForOrganizations(organizationId: string, organizationIds: string[]): Promise<BalanceItem[]>;
34
44
  static balanceForMembers(organizationId: string, memberIds: string[]): Promise<BalanceItem[]>;
35
45
  static balanceForUsers(organizationId: string, userIds: string[]): Promise<BalanceItem[]>;
46
+ static balanceForRegistrations(organizationId: string, registrationIds: string[]): Promise<BalanceItem[]>;
36
47
  /**
37
48
  * Experimental: needs to move to library
38
49
  */
@@ -1 +1 @@
1
- {"version":3,"file":"CachedBalance.d.ts","sourceRoot":"","sources":["../../../src/models/CachedBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAA0B,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAsE,SAAS,EAA+C,MAAM,gBAAgB,CAAC;AAC5J,OAAO,EAAqB,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACpC,MAAM,CAAC,KAAK,SAAiC;IAO7C,EAAE,EAAG,MAAM,CAAC;IAGZ,cAAc,EAAE,MAAM,CAAC;IAGvB,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IAEH,UAAU,EAAE,qBAAqB,CAAC;IAGlC,MAAM,SAAK;IAGX,aAAa,SAAK;IAYlB,SAAS,EAAE,IAAI,CAAC;IAUhB,SAAS,EAAE,IAAI,CAAC;WAEH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;WAWjG,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,qBAAqB;WAc/F,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,qBAAqB;mBAWxF,iBAAiB;mBA2BjB,eAAe;mBA6Ef,aAAa;WAqCrB,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE;WAQxE,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;WAQ5D,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;WAQxD,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE;WAOzE,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;WAO7D,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;IAOtE;;OAEG;IACH,MAAM,CAAC,MAAM;CAchB"}
1
+ {"version":3,"file":"CachedBalance.d.ts","sourceRoot":"","sources":["../../../src/models/CachedBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAA0B,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAyB,SAAS,EAAuB,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;AAC/G,OAAO,EAAuD,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACpC,MAAM,CAAC,KAAK,SAAiC;IAO7C,EAAE,EAAG,MAAM,CAAC;IAGZ,cAAc,EAAE,MAAM,CAAC;IAGvB,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IAEH,UAAU,EAAE,qBAAqB,CAAC;IAGlC,UAAU,SAAK;IAGf,UAAU,SAAK;IAEf;;OAEG;IAEH,aAAa,SAAK;IAElB;;OAEG;IAEH,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAY9B,SAAS,EAAE,IAAI,CAAC;IAUhB,SAAS,EAAE,IAAI,CAAC;WAEH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;WAejG,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,qBAAqB;WAqB/F,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,qBAAqB;mBAiBxF,iBAAiB;IAiBtC,MAAM,CAAC,gBAAgB;mBAIF,eAAe;mBA6Kf,aAAa;WA2CrB,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE;WAQxE,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;WAQ5D,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE;WAQxE,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;WAQxD,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE;WAOzE,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;WAO7D,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;WAOzD,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE;IAOtF;;OAEG;IACH,MAAM,CAAC,MAAM;CAchB"}