@stamhoofd/models 2.19.0 → 2.20.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 (48) hide show
  1. package/dist/src/models/Member.js.map +1 -1
  2. package/dist/src/models/MemberResponsibilityRecord.d.ts +5 -0
  3. package/dist/src/models/MemberResponsibilityRecord.d.ts.map +1 -1
  4. package/dist/src/models/MemberResponsibilityRecord.js +16 -1
  5. package/dist/src/models/MemberResponsibilityRecord.js.map +1 -1
  6. package/dist/src/models/Organization.d.ts +2 -0
  7. package/dist/src/models/Organization.d.ts.map +1 -1
  8. package/dist/src/models/Organization.js +19 -3
  9. package/dist/src/models/Organization.js.map +1 -1
  10. package/dist/src/models/RegisterCode.d.ts +0 -10
  11. package/dist/src/models/RegisterCode.d.ts.map +1 -1
  12. package/dist/src/models/RegisterCode.js +0 -86
  13. package/dist/src/models/RegisterCode.js.map +1 -1
  14. package/dist/src/models/STCredit.d.ts +0 -7
  15. package/dist/src/models/STCredit.d.ts.map +1 -1
  16. package/dist/src/models/STCredit.js +0 -69
  17. package/dist/src/models/STCredit.js.map +1 -1
  18. package/dist/src/models/STInvoice.d.ts +2 -20
  19. package/dist/src/models/STInvoice.d.ts.map +1 -1
  20. package/dist/src/models/STInvoice.js +0 -364
  21. package/dist/src/models/STInvoice.js.map +1 -1
  22. package/dist/src/models/STPendingInvoice.d.ts +1 -21
  23. package/dist/src/models/STPendingInvoice.d.ts.map +1 -1
  24. package/dist/src/models/STPendingInvoice.js +0 -213
  25. package/dist/src/models/STPendingInvoice.js.map +1 -1
  26. package/dist/src/models/UsedRegisterCode.d.ts +0 -5
  27. package/dist/src/models/UsedRegisterCode.d.ts.map +1 -1
  28. package/dist/src/models/UsedRegisterCode.js +0 -101
  29. package/dist/src/models/UsedRegisterCode.js.map +1 -1
  30. package/package.json +2 -2
  31. package/src/models/Member.ts +5 -5
  32. package/src/models/MemberResponsibilityRecord.ts +21 -2
  33. package/src/models/Organization.ts +23 -3
  34. package/src/models/RegisterCode.ts +0 -95
  35. package/src/models/STCredit.ts +0 -82
  36. package/src/models/STInvoice.ts +2 -433
  37. package/src/models/STPendingInvoice.ts +2 -247
  38. package/src/models/UsedRegisterCode.ts +0 -115
  39. package/dist/src/helpers/InvoiceBuilder.d.ts +0 -29
  40. package/dist/src/helpers/InvoiceBuilder.d.ts.map +0 -1
  41. package/dist/src/helpers/InvoiceBuilder.js +0 -407
  42. package/dist/src/helpers/InvoiceBuilder.js.map +0 -1
  43. package/dist/src/helpers/InvoiceBuilder.test.d.ts +0 -2
  44. package/dist/src/helpers/InvoiceBuilder.test.d.ts.map +0 -1
  45. package/dist/src/helpers/InvoiceBuilder.test.js +0 -52
  46. package/dist/src/helpers/InvoiceBuilder.test.js.map +0 -1
  47. package/src/helpers/InvoiceBuilder.test.ts +0 -57
  48. package/src/helpers/InvoiceBuilder.ts +0 -501
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.STCredit = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const simple_database_1 = require("@simonbackx/simple-database");
6
- const structures_1 = require("@stamhoofd/structures");
7
6
  const uuid_1 = require("uuid");
8
7
  class STCredit extends simple_database_1.Model {
9
8
  static table = "stamhoofd_credits";
@@ -16,74 +15,6 @@ class STCredit extends simple_database_1.Model {
16
15
  createdAt;
17
16
  expireAt = null;
18
17
  updatedAt;
19
- static async getForOrganization(organizationId) {
20
- return await STCredit.where({ organizationId }, {
21
- sort: [{
22
- column: "createdAt",
23
- direction: "DESC"
24
- }]
25
- });
26
- }
27
- static async getBalance(organizationId) {
28
- const now = new Date();
29
- const credits = await this.getForOrganization(organizationId);
30
- credits.reverse();
31
- let balance = 0;
32
- let balanceTransactions = 0;
33
- for (const credit of credits) {
34
- if (credit.expireAt !== null && credit.expireAt <= now) {
35
- continue;
36
- }
37
- // TODO: we can expire credits here
38
- balance += credit.change;
39
- if (balance < 0) {
40
- // This is needed to make deleting credit and expiring credit work.
41
- // At no point in time, the credits can get negative.
42
- // E.g. Getting credits, using them, and later expiring 'getting the credits' won't have impact on future credits
43
- balance = 0;
44
- }
45
- if (credit.allowTransactions || credit.change < 0) {
46
- balanceTransactions += credit.change;
47
- // No point in time we can have more balance for transactions
48
- balanceTransactions = Math.min(Math.max(balanceTransactions, 0), balance);
49
- }
50
- }
51
- return { balance: balance - balanceTransactions, balanceTransactions };
52
- }
53
- static async applyCredits(organizationId, invoice, dryRun) {
54
- // Apply credits
55
- const { balance, balanceTransactions } = await STCredit.getBalance(organizationId);
56
- if (balance > 0 || balanceTransactions > 0) {
57
- // Loop all items where you can use credits for
58
- const maxCredits = invoice.meta.items.filter(i => i.canUseCredits).reduce((price, item) => price + item.price, 0);
59
- let applyValue = Math.min(maxCredits, balance);
60
- if (balanceTransactions > 0) {
61
- // Can apply to all items
62
- const maxTransactionsCredits = invoice.meta.items.reduce((price, item) => price + item.price, 0) - applyValue;
63
- applyValue += Math.min(maxTransactionsCredits, balanceTransactions);
64
- }
65
- if (applyValue > 0) {
66
- invoice.meta.items.push(structures_1.STInvoiceItem.create({
67
- name: "Gebruikt tegoed",
68
- unitPrice: -applyValue,
69
- amount: 1,
70
- date: new Date()
71
- }));
72
- if (!dryRun) {
73
- const credit = new STCredit();
74
- credit.organizationId = organizationId;
75
- credit.change = -applyValue;
76
- credit.description = "Tijdelijk vrijgehouden voor lopende betaling";
77
- // Reserve for one week (direct debit can take a while)
78
- credit.expireAt = new Date();
79
- credit.expireAt.setDate(credit.expireAt.getDate() + 7);
80
- credit.expireAt.setMilliseconds(0);
81
- await credit.save();
82
- invoice.creditId = credit.id;
83
- }
84
- }
85
- }
86
- }
87
18
  }
88
19
  exports.STCredit = STCredit;
89
20
  tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"STCredit.js","sourceRoot":"","sources":["../../../src/models/STCredit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"STCredit.js","sourceRoot":"","sources":["../../../src/models/STCredit.ts"],"names":[],"mappings":";;;;AAAA,iEAA4D;AAC5D,+BAAoC;AAGpC,MAAa,QAAS,SAAQ,uBAAK;IAC/B,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC;IAEnC,UAAU;IAMV,EAAE,CAAU;IAGZ,cAAc,CAAS;IAGvB,WAAW,CAAS;IAGpB,MAAM,CAAS;IAGf,iBAAiB,GAAG,KAAK,CAAA;IAYzB,SAAS,CAAM;IAGf,QAAQ,GAAgB,IAAI,CAAA;IAU5B,SAAS,CAAM;;AA9CnB,4BA+CC;AAtCG;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;oCACU;AAGZ;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gDACJ;AAGvB;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;6CACP;AAGpB;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;wCACb;AAGf;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;mDACH;AAYzB;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,CAAA;YACvB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;YACvB,OAAO,IAAI,CAAA;QACf,CAAC;KACJ,CAAC;2CACa;AAGf;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;0CACjB;AAU5B;IARC,IAAA,wBAAM,EAAC;QACJ,IAAI,EAAE,UAAU,EAAE,UAAU;YACxB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;YACvB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;YACvB,OAAO,IAAI,CAAA;QACf,CAAC;QACD,UAAU,EAAE,IAAI;KACnB,CAAC;2CACa"}
@@ -1,6 +1,6 @@
1
1
  import { ManyToOneRelation, Model } from "@simonbackx/simple-database";
2
- import { STBillingStatus, STInvoice as STInvoiceStruct, STInvoiceMeta } from '@stamhoofd/structures';
3
- import { Organization, Payment, STPackage } from './';
2
+ import { STInvoiceMeta } from '@stamhoofd/structures';
3
+ import { Organization, Payment } from './';
4
4
  export declare class STInvoice extends Model {
5
5
  static table: string;
6
6
  private static numberCache;
@@ -29,23 +29,5 @@ export declare class STInvoice extends Model {
29
29
  reference: string | null;
30
30
  static organization: ManyToOneRelation<"organization", Organization>;
31
31
  static payment: ManyToOneRelation<"payment", Payment>;
32
- static createFor(organization: Organization): STInvoice;
33
- getStructure(): Promise<STInvoiceStruct>;
34
- getPackages(): Promise<STPackage[]>;
35
- getOrganizationActivePackages(): Promise<STPackage[]>;
36
- activatePackages(paymentSucceeded?: boolean): Promise<void>;
37
- /**
38
- * WARNING: only call this in the correct queue!
39
- */
40
- markPaid({ sendEmail }?: {
41
- sendEmail: boolean;
42
- }): Promise<void>;
43
- assignNextNumber(): Promise<void>;
44
- generatePdf(): Promise<void>;
45
- /**
46
- * WARNGING: only call this method in the correct queue!
47
- */
48
- markFailed(payment: Payment, markFailed?: boolean): Promise<void>;
49
- static getBillingStatus(organization: Organization, hideExpired?: boolean): Promise<STBillingStatus>;
50
32
  }
51
33
  //# sourceMappingURL=STInvoice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"STInvoice.d.ts","sourceRoot":"","sources":["../../../src/models/STInvoice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,iBAAiB,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAG/E,OAAO,EAAmE,eAAe,EAA8B,SAAS,IAAI,eAAe,EAAiB,aAAa,EAA2F,MAAM,uBAAuB,CAAC;AAK1S,OAAO,EAAE,YAAY,EAAE,OAAO,EAAY,SAAS,EAAsC,MAAM,IAAI,CAAC;AAEpG,qBAAa,SAAU,SAAQ,KAAK;IAChC,MAAM,CAAC,KAAK,SAAwB;IAEpC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAsB;IAQhD,EAAE,EAAG,MAAM,CAAC;IAEZ;;OAEG;IAEH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;;OAGG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAO;IAE9B;;OAEG;IAEH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAG/B,IAAI,EAAE,aAAa,CAAA;IAEnB;;OAEG;IAEH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAO;IAG5B,MAAM,EAAE,IAAI,GAAG,IAAI,CAAO;IAY1B,SAAS,EAAE,IAAI,CAAA;IAUf,SAAS,EAAE,IAAI,CAAA;IAGf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAE/B,MAAM,CAAC,YAAY,kDAAuD;IAC1E,MAAM,CAAC,OAAO,wCAA6C;IAE3D,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS;IAkBjD,YAAY;IAUZ,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAqBnC,6BAA6B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAIrD,gBAAgB,CAAC,gBAAgB,UAAQ;IAgD/C;;OAEG;IACG,QAAQ,CAAC,EAAC,SAAS,EAAC;;KAAsB;IA6H1C,gBAAgB;IA6BhB,WAAW;IAMjB;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,UAAO;WAoGvC,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,UAAO,GAAG,OAAO,CAAC,eAAe,CAAC;CA2D1G"}
1
+ {"version":3,"file":"STInvoice.d.ts","sourceRoot":"","sources":["../../../src/models/STInvoice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,iBAAiB,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE3C,qBAAa,SAAU,SAAQ,KAAK;IAChC,MAAM,CAAC,KAAK,SAAwB;IAEpC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAsB;IAQhD,EAAE,EAAG,MAAM,CAAC;IAEZ;;OAEG;IAEH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;;OAGG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAO;IAE9B;;OAEG;IAEH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAG/B,IAAI,EAAE,aAAa,CAAA;IAEnB;;OAEG;IAEH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAO;IAG5B,MAAM,EAAE,IAAI,GAAG,IAAI,CAAO;IAY1B,SAAS,EAAE,IAAI,CAAA;IAUf,SAAS,EAAE,IAAI,CAAA;IAGf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAE/B,MAAM,CAAC,YAAY,kDAAuD;IAC1E,MAAM,CAAC,OAAO,wCAA6C;CAC9D"}
@@ -3,12 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.STInvoice = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const simple_database_1 = require("@simonbackx/simple-database");
6
- const email_1 = require("@stamhoofd/email");
7
- const queues_1 = require("@stamhoofd/queues");
8
6
  const structures_1 = require("@stamhoofd/structures");
9
- const utility_1 = require("@stamhoofd/utility");
10
7
  const uuid_1 = require("uuid");
11
- const InvoiceBuilder_1 = require("../helpers/InvoiceBuilder");
12
8
  const _1 = require("./");
13
9
  class STInvoice extends simple_database_1.Model {
14
10
  static table = "stamhoofd_invoices";
@@ -39,366 +35,6 @@ class STInvoice extends simple_database_1.Model {
39
35
  reference = null;
40
36
  static organization = new simple_database_1.ManyToOneRelation(_1.Organization, "organization");
41
37
  static payment = new simple_database_1.ManyToOneRelation(_1.Payment, "payment");
42
- static createFor(organization) {
43
- const invoice = new STInvoice();
44
- invoice.organizationId = organization.id;
45
- const date = new Date();
46
- invoice.meta = structures_1.STInvoiceMeta.create({
47
- date,
48
- companyName: organization.meta.companyName ?? organization.name,
49
- companyContact: organization.privateMeta.billingContact ?? "",
50
- companyAddress: organization.meta.companyAddress ?? organization.address,
51
- companyVATNumber: organization.meta.VATNumber,
52
- companyNumber: organization.meta.companyNumber,
53
- VATPercentage: (0, structures_1.calculateVATPercentage)(organization.meta.companyAddress ?? organization.address, organization.meta.VATNumber)
54
- });
55
- return invoice;
56
- }
57
- async getStructure() {
58
- let payment;
59
- if (this.paymentId) {
60
- payment = await _1.Payment.getByID(this.paymentId);
61
- }
62
- return structures_1.STInvoice.create(Object.assign({}, this, {
63
- payment: payment ? structures_1.Payment.create(payment) : null
64
- }));
65
- }
66
- async getPackages() {
67
- const ids = new Set();
68
- for (const item of this.meta.items) {
69
- if (item.package) {
70
- ids.add(item.package.id);
71
- }
72
- }
73
- if (ids.size > 0) {
74
- const packages = await _1.STPackage.getByIDs(...ids);
75
- if (packages.length !== ids.size) {
76
- console.warn("Invoice contains invalid package ids " + this.id);
77
- }
78
- return packages;
79
- }
80
- return [];
81
- }
82
- async getOrganizationActivePackages() {
83
- return this.organizationId ? (await _1.STPackage.getForOrganization(this.organizationId)) : [];
84
- }
85
- async activatePackages(paymentSucceeded = false) {
86
- const packages = await this.getPackages();
87
- // Search for all packages and activate them if needed (might be possible that they are already validated)
88
- for (const p of packages) {
89
- // It is possible that the meta of the package has changed in the previous loop call (in pack.activate), so we need to refetch it otherwise we get 'meta' conflicts
90
- const pack = (await _1.STPackage.getByID(p.id)) ?? p;
91
- console.log("Activating package " + pack.id);
92
- // We'll never have multiple invoices for the same package that are awaiting payments
93
- if (paymentSucceeded) {
94
- pack.meta.firstFailedPayment = null;
95
- pack.meta.paymentFailedCount = 0;
96
- }
97
- await pack.activate();
98
- // Activate doesn't save always, so save if needed:
99
- await pack.save();
100
- // Deactivate demo packages
101
- const remove = [];
102
- if (pack.meta.type === structures_1.STPackageType.Members) {
103
- // Remove demo
104
- remove.push(structures_1.STPackageType.TrialMembers);
105
- }
106
- if (pack.meta.type === structures_1.STPackageType.SingleWebshop || pack.meta.type === structures_1.STPackageType.Webshops) {
107
- // Remove demo
108
- remove.push(structures_1.STPackageType.TrialWebshops);
109
- }
110
- if (remove.length > 0 && this.organizationId) {
111
- // Get all packages
112
- const all = await _1.STPackage.getForOrganization(this.organizationId);
113
- for (const pack of all) {
114
- if (remove.includes(pack.meta.type)) {
115
- console.log("Disabling demo package " + pack.id + " because package is bought.");
116
- // Stop
117
- pack.removeAt = new Date();
118
- pack.removeAt.setTime(pack.removeAt.getTime() - 1000);
119
- await pack.save();
120
- }
121
- }
122
- }
123
- }
124
- }
125
- /**
126
- * WARNING: only call this in the correct queue!
127
- */
128
- async markPaid({ sendEmail } = { sendEmail: true }) {
129
- // Schule on the queue because we are modifying pending invoices
130
- if (this.paidAt !== null) {
131
- return;
132
- }
133
- this.paidAt = new Date();
134
- if (this.meta.priceWithoutVAT > 0) {
135
- // Only assign a number if it was an non empty invoice
136
- await this.assignNextNumber();
137
- }
138
- if (this.creditId !== null) {
139
- const credit = await _1.STCredit.getByID(this.creditId);
140
- if (credit) {
141
- // This credit was used to pay this invoice (partially)
142
- credit.description = this.number !== null ? "Factuur " + this.number : "Betaling " + this.id;
143
- credit.expireAt = null;
144
- await credit.save();
145
- }
146
- }
147
- const packages = await this.getPackages();
148
- // Increase paid amounts and paid prices
149
- for (const item of this.meta.items) {
150
- if (item.package) {
151
- const pack = packages.find(p => p.id === item.package?.id);
152
- if (pack) {
153
- // Increase paid amount
154
- pack.meta.paidPrice += item.price;
155
- pack.meta.paidAmount += item.amount;
156
- await pack.save();
157
- }
158
- }
159
- }
160
- // Search for all packages and activate them if needed (might be possible that they are already validated)
161
- await this.activatePackages(true);
162
- if (packages.length === 0) {
163
- // Mark payments succeeded
164
- const orgPackages = await this.getOrganizationActivePackages();
165
- for (const p of orgPackages) {
166
- if (p.meta.firstFailedPayment) {
167
- const pack = (await _1.STPackage.getByID(p.id)) ?? p;
168
- pack.meta.firstFailedPayment = null;
169
- pack.meta.paymentFailedCount = 0;
170
- await pack.save();
171
- }
172
- }
173
- }
174
- // If needed: remove the invoice items from the pending invoice
175
- if (this.organizationId) {
176
- const pendingInvoice = await _1.STPendingInvoice.getForOrganization(this.organizationId);
177
- if (pendingInvoice) {
178
- // Remove all invoice items that were paid
179
- const newItems = [];
180
- for (const item of pendingInvoice.meta.items) {
181
- const found = this.meta.items.find(i => i.id === item.id);
182
- if (!found) {
183
- newItems.push(item);
184
- }
185
- else {
186
- console.log("Removed invoice item " + item.id + " from pending invoice " + pendingInvoice.id);
187
- }
188
- }
189
- pendingInvoice.meta.items = newItems;
190
- if (pendingInvoice.invoiceId === this.id) {
191
- // Unlock the pending invoice: we allow new invoices to get created
192
- pendingInvoice.invoiceId = null;
193
- }
194
- await pendingInvoice.save();
195
- }
196
- // Force regeneration of organization meta data
197
- await _1.STPackage.updateOrganizationPackages(this.organizationId);
198
- }
199
- if (this.number !== null && !this.meta.pdf) {
200
- await this.generatePdf();
201
- }
202
- if (this.organizationId && this.meta.pdf && this.number !== null && sendEmail) {
203
- const organization = await _1.Organization.getByID(this.organizationId);
204
- if (organization) {
205
- const invoicingTo = await organization.getInvoicingToEmails();
206
- if (invoicingTo) {
207
- // Send the e-mail
208
- email_1.Email.sendInternal({
209
- to: invoicingTo,
210
- bcc: "simon@stamhoofd.be",
211
- subject: "Stamhoofd Factuur " + this.number + " voor " + organization.name,
212
- text: "Dag " + organization.name + ", \n\nBedankt voor jullie vertrouwen in Stamhoofd. In bijlage vinden jullie factuur " + this.number + " voor jullie administratie. Deze werd al betaald, je hoeft dus geen actie meer te ondernemen. Neem gerust contact met ons op (via " + organization.i18n.$t("shared.emails.general") + ") als je denkt dat er iets fout is gegaan of als je nog bijkomende vragen zou hebben.\n\nMet vriendelijke groeten,\nStamhoofd\n\n",
213
- attachments: [
214
- {
215
- filename: "factuur-" + this.number + ".pdf",
216
- href: this.meta.pdf.getPublicPath(),
217
- contentType: "application/pdf"
218
- }
219
- ]
220
- }, organization.i18n);
221
- }
222
- }
223
- }
224
- // Reward if we have an open register code
225
- if (this.meta.priceWithVAT >= 100 && this.organizationId) {
226
- // We spend some money
227
- const code = await _1.UsedRegisterCode.getFor(this.organizationId);
228
- if (code && !code.creditId) {
229
- console.log("Rewarding code " + code.id + " for payment");
230
- // Deze code werd nog niet beloond
231
- await code.reward();
232
- }
233
- }
234
- // todo: link member_membership items to this newly created invoice
235
- }
236
- async assignNextNumber() {
237
- return await queues_1.QueueHandler.schedule("billing/invoice-numbers", async () => {
238
- // Get clone
239
- const refreshed = await STInvoice.getByID(this.id);
240
- if (!refreshed || refreshed.number !== null) {
241
- return;
242
- }
243
- // Removed the cache because not working across multiple instances
244
- // if (STInvoice.numberCache) {
245
- // this.number = STInvoice.numberCache + 1
246
- // await this.save()
247
- //
248
- // // If save succeeded: increase it
249
- // STInvoice.numberCache++;
250
- // return
251
- // }
252
- const lastInvoice = await STInvoice.where({ number: { value: null, sign: "!=" } }, { sort: [{ column: "number", direction: "DESC" }], limit: 1 });
253
- STInvoice.numberCache = lastInvoice[0]?.number ?? 0;
254
- this.number = STInvoice.numberCache + 1;
255
- this.meta.date = new Date();
256
- await this.save();
257
- // If save succeeded: increase it
258
- STInvoice.numberCache++;
259
- return;
260
- });
261
- }
262
- async generatePdf() {
263
- const builder = new InvoiceBuilder_1.InvoiceBuilder(this);
264
- this.meta.pdf = await builder.build();
265
- await this.save();
266
- }
267
- /**
268
- * WARNGING: only call this method in the correct queue!
269
- */
270
- async markFailed(payment, markFailed = true) {
271
- console.log("Mark invoice as failed", this.id);
272
- const packages = await this.getPackages();
273
- if (markFailed && (payment.method === structures_1.PaymentMethod.DirectDebit || payment.method === structures_1.PaymentMethod.Transfer)) {
274
- // Only mark failed payments for background payments
275
- for (const pack of packages) {
276
- console.log("Marking package with failed payment " + pack.id);
277
- pack.meta.firstFailedPayment = pack.meta.firstFailedPayment ?? new Date();
278
- pack.meta.paymentFailedCount++;
279
- await pack.save();
280
- }
281
- if (packages.length == 0) {
282
- // Mark all active packages as failed
283
- const activePackages = await this.getOrganizationActivePackages();
284
- for (const pack of activePackages) {
285
- console.log("Marking package with failed payment " + pack.id);
286
- pack.meta.firstFailedPayment = pack.meta.firstFailedPayment ?? new Date();
287
- pack.meta.paymentFailedCount++;
288
- await pack.save();
289
- }
290
- }
291
- }
292
- if (this.organizationId) {
293
- const pendingInvoice = await _1.STPendingInvoice.getForOrganization(this.organizationId);
294
- if (pendingInvoice && pendingInvoice.invoiceId === this.id) {
295
- pendingInvoice.invoiceId = null;
296
- // Also update the packages in the pending invoice itself
297
- for (const item of pendingInvoice.meta.items) {
298
- const pack = item.package;
299
- if (pack) {
300
- const pp = packages.find(p => p.id === pack.id);
301
- if (pp) {
302
- console.log("Updated package " + pp.id + " in pending invoice");
303
- // Update reference to include new failed counts
304
- item.package = structures_1.STPackage.create(pp);
305
- }
306
- }
307
- }
308
- await pendingInvoice.save();
309
- }
310
- // Force regeneration of organization meta data
311
- await _1.STPackage.updateOrganizationPackages(this.organizationId);
312
- }
313
- if (this.creditId !== null) {
314
- const credit = await _1.STCredit.getByID(this.creditId);
315
- if (credit && (credit.expireAt === null || credit.expireAt > new Date())) {
316
- // Expire usage (do not delete to keep the relation for debugging and recovery)
317
- credit.expireAt = new Date(new Date().getTime() - 1000);
318
- await credit.save();
319
- }
320
- }
321
- if (markFailed && this.organizationId && payment.method === structures_1.PaymentMethod.DirectDebit) {
322
- const organization = await _1.Organization.getByID(this.organizationId);
323
- if (organization) {
324
- const invoicingTo = await organization.getInvoicingToEmails();
325
- if (invoicingTo) {
326
- // Send the e-mail
327
- email_1.Email.sendInternal({
328
- to: invoicingTo,
329
- bcc: "simon@stamhoofd.be",
330
- subject: "Betaling mislukt voor " + organization.name,
331
- text: "Dag " + organization.name + ", \n\nDe automatische betaling via domiciliëring van jullie openstaande bedrag is mislukt (zie daarvoor onze vorige e-mail). Kijk even na wat er fout ging en betaal het openstaande bedrag manueel om te vermijden dat bepaalde diensten tijdelijk worden uitgeschakeld. Betalen kan via Stamhoofd > Instellingen > Facturen en betalingen > Openstaand bedrag > Afrekenen. Neem gerust contact met ons op als je bijkomende vragen hebt.\n\nMet vriendelijke groeten,\nStamhoofd\n\n",
332
- }, organization.i18n);
333
- }
334
- }
335
- }
336
- if (markFailed && this.organizationId && payment.method === structures_1.PaymentMethod.Transfer) {
337
- const organization = await _1.Organization.getByID(this.organizationId);
338
- if (organization) {
339
- const invoicingTo = await organization.getInvoicingToEmails();
340
- if (invoicingTo) {
341
- // Send the e-mail
342
- email_1.Email.sendInternal({
343
- to: invoicingTo,
344
- bcc: "simon@stamhoofd.be",
345
- subject: "Betaling mislukt voor " + organization.name,
346
- text: "Dag " + organization.name + ", \n\nBij nazicht blijkt dat we geen overschrijving hebben ontvangen voor jullie aankoop. Kijk even na wat er fout ging en betaal het openstaande bedrag om te vermijden dat de diensten worden uitgeschakeld. Betalen kan via Stamhoofd > Instellingen > Facturen en betalingen > Openstaand bedrag > Afrekenen. Neem gerust contact met ons op als je bijkomende vragen hebt.\n\nMet vriendelijke groeten,\nStamhoofd\n\n",
347
- }, organization.i18n);
348
- }
349
- }
350
- }
351
- }
352
- static async getBillingStatus(organization, hideExpired = true) {
353
- // Get all packages
354
- const packages = hideExpired ? (await _1.STPackage.getForOrganization(organization.id)) : (await _1.STPackage.getForOrganizationIncludingExpired(organization.id));
355
- // GEt all invoices
356
- const invoices = await STInvoice.where({ organizationId: organization.id, number: { sign: "!=", value: null } });
357
- // Get the pending invoice if it exists
358
- const pendingInvoice = await _1.STPendingInvoice.getForOrganization(organization.id);
359
- // Generate temporary pending invoice items for the current state without adding them IRL
360
- let notYetCreatedItems = [];
361
- try {
362
- notYetCreatedItems = await _1.STPendingInvoice.createItems(organization.id, pendingInvoice);
363
- }
364
- catch (e) {
365
- console.error(e);
366
- }
367
- const pendingInvoiceStruct = pendingInvoice ? structures_1.STPendingInvoice.create(pendingInvoice) : (notYetCreatedItems.length > 0 ? structures_1.STPendingInvoice.create({
368
- meta: structures_1.STInvoiceMeta.create({
369
- companyName: organization.meta.companyName ?? organization.name,
370
- companyContact: organization.privateMeta.billingContact ?? "",
371
- companyAddress: organization.meta.companyAddress ?? organization.address,
372
- companyVATNumber: organization.meta.VATNumber,
373
- VATPercentage: (0, structures_1.calculateVATPercentage)(organization.meta.companyAddress ?? organization.address, organization.meta.VATNumber)
374
- })
375
- }) : null);
376
- if (notYetCreatedItems.length > 0 && pendingInvoiceStruct) {
377
- pendingInvoiceStruct.meta.items.push(...notYetCreatedItems);
378
- }
379
- if (pendingInvoiceStruct) {
380
- // Compress
381
- pendingInvoiceStruct.meta.items = structures_1.STInvoiceItem.compress(pendingInvoiceStruct.meta.items);
382
- }
383
- if (pendingInvoice?.invoiceId && pendingInvoiceStruct) {
384
- const invoice = await STInvoice.getByID(pendingInvoice?.invoiceId);
385
- if (invoice) {
386
- pendingInvoiceStruct.invoice = await invoice.getStructure();
387
- }
388
- }
389
- invoices.sort((a, b) => utility_1.Sorter.byDateValue(a.createdAt, b.createdAt));
390
- const invoiceStructures = [];
391
- for (const invoice of invoices) {
392
- invoiceStructures.push(await invoice.getStructure());
393
- }
394
- const credits = await _1.STCredit.getForOrganization(organization.id);
395
- return structures_1.STBillingStatus.create({
396
- packages: packages.map(pack => structures_1.STPackage.create(pack)),
397
- invoices: invoiceStructures,
398
- pendingInvoice: pendingInvoiceStruct,
399
- credits: credits.map(c => structures_1.STCredit.create(c))
400
- });
401
- }
402
38
  }
403
39
  exports.STInvoice = STInvoice;
404
40
  tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"STInvoice.js","sourceRoot":"","sources":["../../../src/models/STInvoice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"STInvoice.js","sourceRoot":"","sources":["../../../src/models/STInvoice.ts"],"names":[],"mappings":";;;;AAAA,iEAA+E;AAC/E,sDAAsD;AACtD,+BAAoC;AAEpC,yBAA2C;AAE3C,MAAa,SAAU,SAAQ,uBAAK;IAChC,MAAM,CAAC,KAAK,GAAG,oBAAoB,CAAC;IAE5B,MAAM,CAAC,WAAW,GAAkB,IAAI,CAAA;IAEhD,UAAU;IAMV,EAAE,CAAU;IAEZ;;OAEG;IAEH,cAAc,CAAgB;IAE9B;;;OAGG;IAEH,QAAQ,GAAkB,IAAI,CAAA;IAE9B;;OAEG;IAEH,SAAS,GAAkB,IAAI,CAAA;IAG/B,IAAI,CAAe;IAEnB;;OAEG;IAEH,MAAM,GAAkB,IAAI,CAAA;IAG5B,MAAM,GAAgB,IAAI,CAAA;IAY1B,SAAS,CAAM;IAUf,SAAS,CAAM;IAGf,SAAS,GAAkB,IAAI,CAAA;IAE/B,MAAM,CAAC,YAAY,GAAG,IAAI,mCAAiB,CAAC,eAAY,EAAE,cAAc,CAAC,CAAC;IAC1E,MAAM,CAAC,OAAO,GAAG,IAAI,mCAAiB,CAAC,UAAO,EAAE,SAAS,CAAC,CAAC;;AAtE/D,8BAuEC;AA5DG;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;qCACU;AAMZ;IADC,IAAA,wBAAM,EAAC,EAAE,UAAU,EAAE,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iDACjD;AAO9B;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;2CACb;AAM9B;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;4CAC3C;AAG/B;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,0BAAa,EAAE,CAAC;uCAC9B;AAMnB;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;yCAChB;AAG5B;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;yCACnB;AAY1B;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,CAAA;YACvB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;YACvB,OAAO,IAAI,CAAA;QACf,CAAC;KACJ,CAAC;4CACa;AAUf;IARC,IAAA,wBAAM,EAAC;QACJ,IAAI,EAAE,UAAU,EAAE,UAAU;YACxB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;YACvB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;YACvB,OAAO,IAAI,CAAA;QACf,CAAC;QACD,UAAU,EAAE,IAAI;KACnB,CAAC;4CACa;AAGf;IADC,IAAA,wBAAM,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;4CACZ"}
@@ -1,5 +1,5 @@
1
1
  import { ManyToOneRelation, Model } from "@simonbackx/simple-database";
2
- import { STInvoiceItem, STInvoiceMeta } from '@stamhoofd/structures';
2
+ import { STInvoiceMeta } from '@stamhoofd/structures';
3
3
  import { Organization } from './';
4
4
  /**
5
5
  * Things that should get paid, but are not yet invoiced yet because:
@@ -21,25 +21,5 @@ export declare class STPendingInvoice extends Model {
21
21
  createdAt: Date;
22
22
  updatedAt: Date;
23
23
  static organization: ManyToOneRelation<"organization", Organization>;
24
- static getForOrganization(organizationId: string): Promise<STPendingInvoice | undefined>;
25
- /**
26
- * Always run this in the queue!
27
- */
28
- static addItems(organization: Organization, invoiceItems: STInvoiceItem[]): Promise<STPendingInvoice | undefined>;
29
- /**
30
- * Always run this in the queue!
31
- */
32
- static addItemsTo(pendingInvoice: STPendingInvoice | undefined, organization: Organization, invoiceItems: STInvoiceItem[]): Promise<STPendingInvoice | undefined>;
33
- /**
34
- * Always run this in the queue!
35
- */
36
- static addAutomaticItems(organization: Organization): Promise<STPendingInvoice | undefined>;
37
- /**
38
- * This method checks all the packages of the given organization and will return
39
- * new invoice items that should get charged. You'll need to add them to
40
- * the pending invoice yourself (always in a queue!)
41
- */
42
- static createItems(organizationId: string, pendingInvoice?: STPendingInvoice): Promise<STInvoiceItem[]>;
43
- static charge(organization: Organization): Promise<void>;
44
24
  }
45
25
  //# sourceMappingURL=STPendingInvoice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"STPendingInvoice.d.ts","sourceRoot":"","sources":["../../../src/models/STPendingInvoice.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,iBAAiB,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAG/E,OAAO,EAAyE,aAAa,EAAE,aAAa,EAAwD,MAAM,uBAAuB,CAAC;AAKlM,OAAO,EAAiB,YAAY,EAAyD,MAAM,IAAI,CAAC;AAExG;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACvC,MAAM,CAAC,KAAK,SAAgC;IAQ5C,EAAE,EAAG,MAAM,CAAC;IAGZ,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,IAAI,EAAE,aAAa,CAAA;IAKnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAY/B,SAAS,EAAE,IAAI,CAAA;IAUf,SAAS,EAAE,IAAI,CAAA;IAEf,MAAM,CAAC,YAAY,kDAAuD;WAE7D,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAK9F;;OAEG;WACU,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAMvH;;OAEG;WACU,UAAU,CAAC,cAAc,EAAE,gBAAgB,GAAG,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IA0BvK;;OAEG;WACU,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IASjG;;;;OAIG;WACU,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,gBAAgB;WA+CrE,MAAM,CAAC,YAAY,EAAE,YAAY;CAoIjD"}
1
+ {"version":3,"file":"STPendingInvoice.d.ts","sourceRoot":"","sources":["../../../src/models/STPendingInvoice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,iBAAiB,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACvC,MAAM,CAAC,KAAK,SAAgC;IAQ5C,EAAE,EAAG,MAAM,CAAC;IAGZ,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,IAAI,EAAE,aAAa,CAAA;IAKnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAY/B,SAAS,EAAE,IAAI,CAAA;IAUf,SAAS,EAAE,IAAI,CAAA;IAEf,MAAM,CAAC,YAAY,kDAAuD;CAC7E"}