@stamhoofd/models 2.111.0 → 2.113.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +32 -0
- package/dist/src/factories/GroupFactory.d.ts +3 -2
- package/dist/src/factories/GroupFactory.d.ts.map +1 -1
- package/dist/src/factories/GroupFactory.js +2 -1
- package/dist/src/factories/GroupFactory.js.map +1 -1
- package/dist/src/helpers/MemberMerger.d.ts.map +1 -1
- package/dist/src/helpers/MemberMerger.js +13 -1
- package/dist/src/helpers/MemberMerger.js.map +1 -1
- package/dist/src/helpers/MemberMerger.test.js +25 -9
- package/dist/src/helpers/MemberMerger.test.js.map +1 -1
- package/dist/src/migrations/1769087807-invoices-table.sql +33 -0
- package/dist/src/migrations/1769087808-invoiced-balance-items-table.sql +24 -0
- package/dist/src/migrations/1769087809-payments-invoice-id.sql +3 -0
- package/dist/src/migrations/1769621227-payments-rounding-amount.sql +2 -0
- package/dist/src/models/BalanceItem.js +3 -3
- package/dist/src/models/BalanceItem.js.map +1 -1
- package/dist/src/models/Invoice.d.ts +12 -0
- package/dist/src/models/Invoice.d.ts.map +1 -1
- package/dist/src/models/Invoice.js +33 -0
- package/dist/src/models/Invoice.js.map +1 -1
- package/dist/src/models/InvoicedBalanceItem.d.ts.map +1 -1
- package/dist/src/models/InvoicedBalanceItem.js +1 -1
- package/dist/src/models/InvoicedBalanceItem.js.map +1 -1
- package/dist/src/models/Member.js +1 -1
- package/dist/src/models/Member.js.map +1 -1
- package/dist/src/models/Payment.d.ts +2 -0
- package/dist/src/models/Payment.d.ts.map +1 -1
- package/dist/src/models/Payment.js +8 -2
- package/dist/src/models/Payment.js.map +1 -1
- package/dist/src/models/UitpasClientCredential.d.ts +1 -0
- package/dist/src/models/UitpasClientCredential.d.ts.map +1 -1
- package/dist/src/models/UitpasClientCredential.js +6 -0
- package/dist/src/models/UitpasClientCredential.js.map +1 -1
- package/package.json +2 -2
- package/src/factories/GroupFactory.ts +3 -2
- package/src/helpers/MemberMerger.test.ts +28 -9
- package/src/helpers/MemberMerger.ts +19 -1
- package/src/migrations/1769087807-invoices-table.sql +33 -0
- package/src/migrations/1769087808-invoiced-balance-items-table.sql +24 -0
- package/src/migrations/1769087809-payments-invoice-id.sql +3 -0
- package/src/migrations/1769621227-payments-rounding-amount.sql +2 -0
- package/src/models/BalanceItem.ts +4 -4
- package/src/models/Invoice.ts +32 -0
- package/src/models/InvoicedBalanceItem.ts +1 -1
- package/src/models/Member.ts +1 -1
- package/src/models/Payment.ts +5 -2
- package/src/models/UitpasClientCredential.ts +7 -0
- package/LICENSE +0 -665
package/src/models/Invoice.ts
CHANGED
|
@@ -103,6 +103,29 @@ export class Invoice extends QueryableModel {
|
|
|
103
103
|
@column({ type: 'boolean' })
|
|
104
104
|
didSendPeppol = false;
|
|
105
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Official invoice date. Set when a number has been generated.
|
|
108
|
+
*/
|
|
109
|
+
@column({
|
|
110
|
+
type: 'datetime',
|
|
111
|
+
nullable: true,
|
|
112
|
+
beforeSave(old?: any) {
|
|
113
|
+
if (old !== undefined || !this.number) {
|
|
114
|
+
return old;
|
|
115
|
+
}
|
|
116
|
+
const date = new Date();
|
|
117
|
+
date.setMilliseconds(0);
|
|
118
|
+
return date;
|
|
119
|
+
},
|
|
120
|
+
})
|
|
121
|
+
invoicedAt: Date | null = null;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* If null, invoicedAt is used
|
|
125
|
+
*/
|
|
126
|
+
@column({ type: 'datetime', nullable: true })
|
|
127
|
+
dueAt: Date | null = null;
|
|
128
|
+
|
|
106
129
|
@column({
|
|
107
130
|
type: 'datetime', beforeSave(old?: any) {
|
|
108
131
|
if (old !== undefined) {
|
|
@@ -186,4 +209,13 @@ export class Invoice extends QueryableModel {
|
|
|
186
209
|
throw e;
|
|
187
210
|
}
|
|
188
211
|
}
|
|
212
|
+
|
|
213
|
+
static async loadBalanceItems(invoices: Invoice[]) {
|
|
214
|
+
if (invoices.length === 0) {
|
|
215
|
+
return { invoicedBalanceItems: [] };
|
|
216
|
+
}
|
|
217
|
+
// Load all the related models from the database so we can build the structures
|
|
218
|
+
const invoicedBalanceItems = await InvoicedBalanceItem.select().where('invoiceId', invoices.map(i => i.id)).fetch();
|
|
219
|
+
return { invoicedBalanceItems };
|
|
220
|
+
}
|
|
189
221
|
}
|
|
@@ -11,7 +11,7 @@ import { VATExcemptReason } from '@stamhoofd/structures';
|
|
|
11
11
|
* and also how it was invoiced (since the unit price, quantity etc can't always match the balance items invoiced price due to rounding)
|
|
12
12
|
*/
|
|
13
13
|
export class InvoicedBalanceItem extends QueryableModel {
|
|
14
|
-
static table = '
|
|
14
|
+
static table = 'invoiced_balance_items';
|
|
15
15
|
|
|
16
16
|
@column({
|
|
17
17
|
primary: true, type: 'string', beforeSave(value) {
|
package/src/models/Member.ts
CHANGED
package/src/models/Payment.ts
CHANGED
|
@@ -86,8 +86,8 @@ export class Payment extends QueryableModel {
|
|
|
86
86
|
*
|
|
87
87
|
* E.g. total price to pay is 0,242 because of VAT, then we round this to 0,24. The roundingAmount will be -0,002 in this case.
|
|
88
88
|
*/
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
@column({ type: 'integer' })
|
|
90
|
+
roundingAmount = 0;
|
|
91
91
|
|
|
92
92
|
/**
|
|
93
93
|
* Fee paid to the payment provider (if available, otherwise set to 0)
|
|
@@ -131,6 +131,9 @@ export class Payment extends QueryableModel {
|
|
|
131
131
|
@column({ type: 'json', nullable: true, decoder: TransferSettings })
|
|
132
132
|
transferSettings: TransferSettings | null = null;
|
|
133
133
|
|
|
134
|
+
@column({ type: 'string', nullable: true })
|
|
135
|
+
invoiceId: string | null = null;
|
|
136
|
+
|
|
134
137
|
@column({
|
|
135
138
|
type: 'datetime', beforeSave(old?: any) {
|
|
136
139
|
if (old !== undefined) {
|
|
@@ -46,4 +46,11 @@ export class UitpasClientCredential extends QueryableModel {
|
|
|
46
46
|
skipUpdate: true,
|
|
47
47
|
})
|
|
48
48
|
updatedAt: Date;
|
|
49
|
+
|
|
50
|
+
async save() {
|
|
51
|
+
if (this.organizationId === null) {
|
|
52
|
+
throw new Error('Not allowed to save uitpas client credentials for platform (organizationId = null)');
|
|
53
|
+
}
|
|
54
|
+
return await super.save();
|
|
55
|
+
}
|
|
49
56
|
}
|