@substrat-run/connector-fortnox 0.5.7 → 0.6.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/README.md +3 -2
- package/dist/api.d.ts +61 -4
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +117 -5
- package/dist/api.js.map +1 -1
- package/dist/index.d.ts +232 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +661 -25
- package/dist/index.js.map +1 -1
- package/dist/mock.d.ts +23 -0
- package/dist/mock.d.ts.map +1 -1
- package/dist/mock.js +70 -3
- package/dist/mock.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ import { fortnoxConsentUrl } from '@substrat-run/connector-fortnox';
|
|
|
52
52
|
|
|
53
53
|
const url = fortnoxConsentUrl({
|
|
54
54
|
clientId, redirectUri, state,
|
|
55
|
-
scopes: ['bookkeeping', 'companyinformation', 'supplierinvoice'],
|
|
55
|
+
scopes: ['bookkeeping', 'companyinformation', 'supplierinvoice', 'archive', 'connectfile'],
|
|
56
56
|
});
|
|
57
57
|
```
|
|
58
58
|
|
|
@@ -180,7 +180,8 @@ to bind time rather than disappearing.
|
|
|
180
180
|
`CompanyInformation`. What it disproved is in caveat 3.
|
|
181
181
|
|
|
182
182
|
`test/live.test.ts` reads only: the data calls are GETs, and the one POST is the token mint,
|
|
183
|
-
which creates no Fortnox record.
|
|
183
|
+
which creates no Fortnox record. The connector writes to Fortnox only for an invoice binding
|
|
184
|
+
that declares `writeback`, and this suite binds none, so
|
|
184
185
|
running it against a production company cannot damage anything. Putting test data INTO a
|
|
185
186
|
sandbox is therefore a separate script — `pnpm fortnox:seed` — which refuses any company whose
|
|
186
187
|
organisation number is not Fortnox's sandbox marker `555555-5555`. Note that an empty sandbox
|
package/dist/api.d.ts
CHANGED
|
@@ -62,7 +62,7 @@ export type FortnoxSecret = z.infer<typeof fortnoxSecret>;
|
|
|
62
62
|
export declare function fortnoxConsentUrl(input: {
|
|
63
63
|
clientId: string;
|
|
64
64
|
redirectUri: string;
|
|
65
|
-
/** e.g. `['bookkeeping', 'companyinformation', 'supplierinvoice']` — `bookkeeping` is what SIE export needs, `supplierinvoice` reads and approves supplier invoices. */
|
|
65
|
+
/** e.g. `['bookkeeping', 'companyinformation', 'supplierinvoice', 'archive', 'connectfile']` — `bookkeeping` is what SIE export needs, `supplierinvoice` reads and approves supplier invoices, and an invoice's file takes both `connectfile` (the connection) and `archive` (the bytes). */
|
|
66
66
|
scopes: readonly string[];
|
|
67
67
|
/** Opaque round-trip value; the caller correlates its own record by it. */
|
|
68
68
|
state: string;
|
|
@@ -96,16 +96,50 @@ declare const fortnoxSupplierInvoice: z.ZodObject<{
|
|
|
96
96
|
DueDate: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
97
97
|
Currency: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
98
98
|
Total: z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<string, string | number>>;
|
|
99
|
+
Balance: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodNull]>>, z.ZodTransform<string | null, string | number | null | undefined>>;
|
|
100
|
+
VAT: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodNull]>>, z.ZodTransform<string | null, string | number | null | undefined>>;
|
|
101
|
+
OCR: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
102
|
+
Comments: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
103
|
+
CommentLog: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
104
|
+
Comment: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
105
|
+
CreatedAt: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
106
|
+
UserName: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
107
|
+
}, z.core.$strip>>>>, z.ZodTransform<{
|
|
108
|
+
Comment: string;
|
|
109
|
+
CreatedAt: string;
|
|
110
|
+
UserName: string;
|
|
111
|
+
}[], {
|
|
112
|
+
Comment: string;
|
|
113
|
+
CreatedAt: string;
|
|
114
|
+
UserName: string;
|
|
115
|
+
}[] | null | undefined>>;
|
|
99
116
|
Booked: z.ZodBoolean;
|
|
100
117
|
Cancelled: z.ZodBoolean;
|
|
118
|
+
Credit: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNull]>>, z.ZodTransform<boolean, boolean | null | undefined>>;
|
|
119
|
+
PaymentPending: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNull]>>, z.ZodTransform<boolean, boolean | null | undefined>>;
|
|
120
|
+
DisablePaymentFile: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNull]>>, z.ZodTransform<boolean, boolean | null | undefined>>;
|
|
121
|
+
VoucherSeries: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
122
|
+
VoucherNumber: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodNull]>>, z.ZodTransform<string | null, string | number | null | undefined>>;
|
|
123
|
+
VoucherYear: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodNull]>>, z.ZodTransform<string | null, string | number | null | undefined>>;
|
|
124
|
+
Project: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
125
|
+
CostCenter: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
101
126
|
SupplierInvoiceRows: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
102
127
|
Account: z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<string, string | number>>;
|
|
128
|
+
AccountDescription: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
103
129
|
CostCenter: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
130
|
+
Project: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
131
|
+
TransactionInformation: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
104
132
|
Debit: z.ZodDefault<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<string, string | number>>>;
|
|
105
133
|
Credit: z.ZodDefault<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<string, string | number>>>;
|
|
106
134
|
}, z.core.$strip>>>;
|
|
107
135
|
}, z.core.$strip>;
|
|
108
136
|
export type FortnoxSupplierInvoice = z.infer<typeof fortnoxSupplierInvoice>;
|
|
137
|
+
/** One file connected to a supplier invoice, as `GET /3/supplierinvoicefileconnections` lists it. */
|
|
138
|
+
declare const fortnoxSupplierInvoiceFile: z.ZodObject<{
|
|
139
|
+
FileId: z.ZodString;
|
|
140
|
+
Name: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>, z.ZodTransform<string, string | null | undefined>>;
|
|
141
|
+
}, z.core.$strip>;
|
|
142
|
+
export type FortnoxSupplierInvoiceFile = z.infer<typeof fortnoxSupplierInvoiceFile>;
|
|
109
143
|
export interface FortnoxApiOptions {
|
|
110
144
|
apiBase?: string;
|
|
111
145
|
oauthBase?: string;
|
|
@@ -172,18 +206,41 @@ export declare class FortnoxApi {
|
|
|
172
206
|
accessToken(): Promise<string>;
|
|
173
207
|
/** A JSON GET against the REST host, authenticated with a freshly-ensured token. */
|
|
174
208
|
private getJson;
|
|
209
|
+
/** One write against the REST host. A `429` never reached Fortnox's books, so it is waited out like a read's. */
|
|
210
|
+
private write;
|
|
175
211
|
/** The company — the probe read, and where a connect flow learns `DatabaseNumber`. */
|
|
176
212
|
companyInformation(): Promise<FortnoxCompany>;
|
|
177
213
|
/** Every financial year the company has, newest first is NOT guaranteed — sort yourself. */
|
|
178
214
|
financialYears(): Promise<FortnoxFinancialYear[]>;
|
|
179
215
|
/**
|
|
180
216
|
* The `GivenNumber` of every supplier invoice changed at or after `lastModified` — Fortnox's
|
|
181
|
-
* `YYYY-MM-DD HH:MM`, in Swedish local time
|
|
182
|
-
* so it is the cheap half, and the caller
|
|
217
|
+
* `YYYY-MM-DD HH:MM`, in Swedish local time — or of every invoice the company has, with `null`.
|
|
218
|
+
* Every list page is read: the list carries no rows, so it is the cheap half, and the caller
|
|
219
|
+
* decides how many details to spend.
|
|
183
220
|
*/
|
|
184
|
-
supplierInvoicesModifiedSince(lastModified: string): Promise<string[]>;
|
|
221
|
+
supplierInvoicesModifiedSince(lastModified: string | null): Promise<string[]>;
|
|
185
222
|
/** One supplier invoice with its rows. */
|
|
186
223
|
supplierInvoice(givenNumber: string): Promise<FortnoxSupplierInvoice>;
|
|
224
|
+
/** Sets or clears the invoice's payment block. Fortnox changes only the fields a `PUT` names. */
|
|
225
|
+
setSupplierInvoicePaymentBlock(givenNumber: string, blocked: boolean): Promise<void>;
|
|
226
|
+
/** Books the invoice. Fortnox refuses one that cannot be booked, with its reason. */
|
|
227
|
+
bookSupplierInvoice(givenNumber: string): Promise<void>;
|
|
228
|
+
/** The invoice's comment log, as text. */
|
|
229
|
+
supplierInvoiceComments(givenNumber: string): Promise<string[]>;
|
|
230
|
+
/** Adds a comment to the log. Fortnox stamps who and when; the log is append-only. */
|
|
231
|
+
addSupplierInvoiceComment(givenNumber: string, comment: string): Promise<void>;
|
|
232
|
+
/** The files connected to a supplier invoice, in Fortnox's order. Needs the `connectfile` scope. */
|
|
233
|
+
supplierInvoiceFiles(givenNumber: string): Promise<FortnoxSupplierInvoiceFile[]>;
|
|
234
|
+
/**
|
|
235
|
+
* One file's bytes out of the company's archive. Needs the `archive` scope. A file over
|
|
236
|
+
* `maxBytes` answers its size as `tooLarge` and no bytes, and is not read whole when the
|
|
237
|
+
* response states its length.
|
|
238
|
+
*/
|
|
239
|
+
archiveFile(fileId: string, maxBytes?: number): Promise<{
|
|
240
|
+
bytes: Uint8Array;
|
|
241
|
+
contentType: string | null;
|
|
242
|
+
tooLarge?: number;
|
|
243
|
+
}>;
|
|
187
244
|
/**
|
|
188
245
|
* The whole year's bookkeeping as one SIE4 file — the read this connector exists for.
|
|
189
246
|
*
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAWhE;;;;;;;;;;;;;GAaG;AAEH,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,qCAAqC,CAAC;AACrE,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,6BAA6B,CAAC;AAE3D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa;;;;iBAcxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api.js
CHANGED
|
@@ -125,6 +125,16 @@ export const fortnoxCompany = z.object({
|
|
|
125
125
|
});
|
|
126
126
|
/** A number Fortnox may send as a JSON number or as a string. Kept as a string: never arithmetic on floats. */
|
|
127
127
|
const fortnoxNumber = z.union([z.number(), z.string().min(1)]).transform(String);
|
|
128
|
+
/** {@link fortnoxNumber} for a field Fortnox may leave unset. `null`, because a guessed zero is a fact nobody stated. */
|
|
129
|
+
const fortnoxOptionalNumber = z
|
|
130
|
+
.union([z.number(), z.string(), z.null()])
|
|
131
|
+
.optional()
|
|
132
|
+
.transform((v) => (v === undefined || v === null || v === '' ? null : String(v)));
|
|
133
|
+
/** A flag Fortnox may leave unset. Unset is false: it has not been set. */
|
|
134
|
+
const fortnoxFlag = z
|
|
135
|
+
.union([z.boolean(), z.null()])
|
|
136
|
+
.optional()
|
|
137
|
+
.transform((v) => v ?? false);
|
|
128
138
|
/**
|
|
129
139
|
* One supplier invoice, as `GET /3/supplierinvoices/{GivenNumber}` returns it. Only the fields
|
|
130
140
|
* the invoice landing carries are read; the rest are ignored.
|
|
@@ -139,17 +149,55 @@ const fortnoxSupplierInvoice = z.object({
|
|
|
139
149
|
DueDate: fortnoxText(),
|
|
140
150
|
Currency: fortnoxText('SEK'),
|
|
141
151
|
Total: fortnoxNumber,
|
|
152
|
+
/** What is left to pay: the only fact on the invoice that says whether it has been paid. */
|
|
153
|
+
Balance: fortnoxOptionalNumber,
|
|
154
|
+
VAT: fortnoxOptionalNumber,
|
|
155
|
+
OCR: fortnoxText(),
|
|
156
|
+
/** The old single comment. Fortnox is retiring it for {@link fortnoxSupplierInvoice.CommentLog}. */
|
|
157
|
+
Comments: fortnoxText(),
|
|
158
|
+
/** Read-only here, written through `POST …/commentlog`. Fortnox's own UI writes only to this log. */
|
|
159
|
+
CommentLog: z
|
|
160
|
+
.array(z.object({
|
|
161
|
+
Comment: fortnoxText(),
|
|
162
|
+
CreatedAt: fortnoxText(),
|
|
163
|
+
UserName: fortnoxText(),
|
|
164
|
+
}))
|
|
165
|
+
.nullish()
|
|
166
|
+
.transform((v) => v ?? []),
|
|
142
167
|
Booked: z.boolean(),
|
|
143
168
|
Cancelled: z.boolean(),
|
|
169
|
+
/** A credit note. */
|
|
170
|
+
Credit: fortnoxFlag,
|
|
171
|
+
PaymentPending: fortnoxFlag,
|
|
172
|
+
/** Keeps the invoice out of payment files, and out of Fortnox's payment view. */
|
|
173
|
+
DisablePaymentFile: fortnoxFlag,
|
|
174
|
+
/** Unset until the invoice is booked. */
|
|
175
|
+
VoucherSeries: fortnoxText(),
|
|
176
|
+
VoucherNumber: fortnoxOptionalNumber,
|
|
177
|
+
/** Fortnox's number for the financial year, not a calendar year. */
|
|
178
|
+
VoucherYear: fortnoxOptionalNumber,
|
|
179
|
+
Project: fortnoxText(),
|
|
180
|
+
CostCenter: fortnoxText(),
|
|
144
181
|
SupplierInvoiceRows: z
|
|
145
182
|
.array(z.object({
|
|
146
183
|
Account: fortnoxNumber,
|
|
184
|
+
AccountDescription: fortnoxText(),
|
|
147
185
|
CostCenter: fortnoxText(),
|
|
186
|
+
Project: fortnoxText(),
|
|
187
|
+
TransactionInformation: fortnoxText(),
|
|
148
188
|
Debit: fortnoxNumber.default('0'),
|
|
149
189
|
Credit: fortnoxNumber.default('0'),
|
|
150
190
|
}))
|
|
151
191
|
.default([]),
|
|
152
192
|
});
|
|
193
|
+
/** One entry of `GET /3/supplierinvoices/{GivenNumber}/commentlog`. */
|
|
194
|
+
const fortnoxSupplierInvoiceComment = z.object({ Comment: fortnoxText() });
|
|
195
|
+
/** One file connected to a supplier invoice, as `GET /3/supplierinvoicefileconnections` lists it. */
|
|
196
|
+
const fortnoxSupplierInvoiceFile = z.object({
|
|
197
|
+
/** The id `GET /3/archive/{id}` reads the bytes by. */
|
|
198
|
+
FileId: z.string().min(1),
|
|
199
|
+
Name: fortnoxText(),
|
|
200
|
+
});
|
|
153
201
|
/** How many list entries one `GET /3/supplierinvoices` page asks for — Fortnox's maximum. */
|
|
154
202
|
const LIST_LIMIT = 500;
|
|
155
203
|
/**
|
|
@@ -284,12 +332,19 @@ export class FortnoxApi {
|
|
|
284
332
|
* connection to the same company, or the company's own integrations, spend from the same
|
|
285
333
|
* limit, and the retry is what absorbs them.
|
|
286
334
|
*/
|
|
287
|
-
async request(path, accept) {
|
|
335
|
+
async request(path, accept, write) {
|
|
336
|
+
const body = write?.body === undefined ? undefined : JSON.stringify(write.body);
|
|
288
337
|
for (let attempt = 0;; attempt += 1) {
|
|
289
338
|
const token = await this.accessToken();
|
|
290
339
|
await this.throttle();
|
|
291
340
|
const res = await this.conn.fetch(`${this.apiBase}${path}`, {
|
|
292
|
-
|
|
341
|
+
...(write ? { method: write.method } : {}),
|
|
342
|
+
...(body === undefined ? {} : { body }),
|
|
343
|
+
headers: {
|
|
344
|
+
Authorization: `Bearer ${token}`,
|
|
345
|
+
...(accept ? { Accept: accept } : {}),
|
|
346
|
+
...(body === undefined ? {} : { 'Content-Type': 'application/json' }),
|
|
347
|
+
},
|
|
293
348
|
});
|
|
294
349
|
if (res.status !== 429 || attempt >= RATE_LIMIT_RETRIES)
|
|
295
350
|
return res;
|
|
@@ -349,6 +404,14 @@ export class FortnoxApi {
|
|
|
349
404
|
}
|
|
350
405
|
return asJson(body, `Fortnox GET ${path}`);
|
|
351
406
|
}
|
|
407
|
+
/** One write against the REST host. A `429` never reached Fortnox's books, so it is waited out like a read's. */
|
|
408
|
+
async write(method, path, body) {
|
|
409
|
+
const res = await this.request(path, 'application/json', { method, body });
|
|
410
|
+
if (!res.ok) {
|
|
411
|
+
const text = await res.text();
|
|
412
|
+
throw new FortnoxApiError(`Fortnox ${method} ${path} failed: ${errorMessage(text, res.status)}`, res.status, text);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
352
415
|
/** The company — the probe read, and where a connect flow learns `DatabaseNumber`. */
|
|
353
416
|
async companyInformation() {
|
|
354
417
|
const raw = (await this.getJson('/companyinformation'));
|
|
@@ -361,17 +424,19 @@ export class FortnoxApi {
|
|
|
361
424
|
}
|
|
362
425
|
/**
|
|
363
426
|
* The `GivenNumber` of every supplier invoice changed at or after `lastModified` — Fortnox's
|
|
364
|
-
* `YYYY-MM-DD HH:MM`, in Swedish local time
|
|
365
|
-
* so it is the cheap half, and the caller
|
|
427
|
+
* `YYYY-MM-DD HH:MM`, in Swedish local time — or of every invoice the company has, with `null`.
|
|
428
|
+
* Every list page is read: the list carries no rows, so it is the cheap half, and the caller
|
|
429
|
+
* decides how many details to spend.
|
|
366
430
|
*/
|
|
367
431
|
async supplierInvoicesModifiedSince(lastModified) {
|
|
368
432
|
const page = z.object({
|
|
369
433
|
MetaInformation: z.object({ '@TotalPages': z.number() }).optional(),
|
|
370
434
|
SupplierInvoices: z.array(z.object({ GivenNumber: fortnoxNumber })).default([]),
|
|
371
435
|
});
|
|
436
|
+
const filter = lastModified === null ? '' : `lastmodified=${encodeURIComponent(lastModified)}&`;
|
|
372
437
|
const numbers = [];
|
|
373
438
|
for (let current = 1, total = 1; current <= total; current += 1) {
|
|
374
|
-
const query =
|
|
439
|
+
const query = `${filter}limit=${LIST_LIMIT}&page=${current}`;
|
|
375
440
|
const parsed = page.parse(await this.getJson(`/supplierinvoices?${query}`));
|
|
376
441
|
numbers.push(...parsed.SupplierInvoices.map((i) => i.GivenNumber));
|
|
377
442
|
total = parsed.MetaInformation?.['@TotalPages'] ?? 1;
|
|
@@ -383,6 +448,53 @@ export class FortnoxApi {
|
|
|
383
448
|
const raw = (await this.getJson(`/supplierinvoices/${encodeURIComponent(givenNumber)}`));
|
|
384
449
|
return fortnoxSupplierInvoice.parse(raw.SupplierInvoice ?? raw);
|
|
385
450
|
}
|
|
451
|
+
/** Sets or clears the invoice's payment block. Fortnox changes only the fields a `PUT` names. */
|
|
452
|
+
async setSupplierInvoicePaymentBlock(givenNumber, blocked) {
|
|
453
|
+
await this.write('PUT', `/supplierinvoices/${encodeURIComponent(givenNumber)}`, {
|
|
454
|
+
SupplierInvoice: { DisablePaymentFile: blocked },
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
/** Books the invoice. Fortnox refuses one that cannot be booked, with its reason. */
|
|
458
|
+
async bookSupplierInvoice(givenNumber) {
|
|
459
|
+
await this.write('PUT', `/supplierinvoices/${encodeURIComponent(givenNumber)}/bookkeep`);
|
|
460
|
+
}
|
|
461
|
+
/** The invoice's comment log, as text. */
|
|
462
|
+
async supplierInvoiceComments(givenNumber) {
|
|
463
|
+
const raw = (await this.getJson(`/supplierinvoices/${encodeURIComponent(givenNumber)}/commentlog`));
|
|
464
|
+
return z.array(fortnoxSupplierInvoiceComment).parse(raw.SupplierInvoiceCommentLog ?? []).map((c) => c.Comment);
|
|
465
|
+
}
|
|
466
|
+
/** Adds a comment to the log. Fortnox stamps who and when; the log is append-only. */
|
|
467
|
+
async addSupplierInvoiceComment(givenNumber, comment) {
|
|
468
|
+
await this.write('POST', `/supplierinvoices/${encodeURIComponent(givenNumber)}/commentlog`, {
|
|
469
|
+
SupplierInvoiceCommentLog: { Comment: comment },
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
/** The files connected to a supplier invoice, in Fortnox's order. Needs the `connectfile` scope. */
|
|
473
|
+
async supplierInvoiceFiles(givenNumber) {
|
|
474
|
+
const raw = (await this.getJson(`/supplierinvoicefileconnections?supplierinvoicenumber=${encodeURIComponent(givenNumber)}`));
|
|
475
|
+
return z.array(fortnoxSupplierInvoiceFile).parse(raw.SupplierInvoiceFileConnections ?? []);
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* One file's bytes out of the company's archive. Needs the `archive` scope. A file over
|
|
479
|
+
* `maxBytes` answers its size as `tooLarge` and no bytes, and is not read whole when the
|
|
480
|
+
* response states its length.
|
|
481
|
+
*/
|
|
482
|
+
async archiveFile(fileId, maxBytes = Infinity) {
|
|
483
|
+
const path = `/archive/${encodeURIComponent(fileId)}`;
|
|
484
|
+
const res = await this.request(path);
|
|
485
|
+
if (!res.ok) {
|
|
486
|
+
const body = await res.text();
|
|
487
|
+
throw new FortnoxApiError(`Fortnox GET ${path} failed: ${errorMessage(body, res.status)}`, res.status, body);
|
|
488
|
+
}
|
|
489
|
+
const contentType = res.headers?.get('Content-Type') ?? null;
|
|
490
|
+
const stated = Number(res.headers?.get('Content-Length') ?? NaN);
|
|
491
|
+
if (stated > maxBytes) {
|
|
492
|
+
await res.body?.getReader().cancel();
|
|
493
|
+
return { bytes: new Uint8Array(), contentType, tooLarge: stated };
|
|
494
|
+
}
|
|
495
|
+
const bytes = new Uint8Array(await res.arrayBuffer());
|
|
496
|
+
return bytes.byteLength > maxBytes ? { bytes: new Uint8Array(), contentType, tooLarge: bytes.byteLength } : { bytes, contentType };
|
|
497
|
+
}
|
|
386
498
|
/**
|
|
387
499
|
* The whole year's bookkeeping as one SIE4 file — the read this connector exists for.
|
|
388
500
|
*
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|