noxctl 0.6.1 → 0.7.3
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 +45 -19
- package/dist/auth.d.ts +21 -2
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +68 -13
- package/dist/auth.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +181 -24
- package/dist/cli.js.map +1 -1
- package/dist/credentials-store.d.ts.map +1 -1
- package/dist/credentials-store.js +11 -1
- package/dist/credentials-store.js.map +1 -1
- package/dist/formatter.d.ts +2 -1
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +4 -2
- package/dist/formatter.js.map +1 -1
- package/dist/fortnox-client.d.ts +9 -0
- package/dist/fortnox-client.d.ts.map +1 -1
- package/dist/fortnox-client.js +26 -6
- package/dist/fortnox-client.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/operations/financial-reports.d.ts.map +1 -1
- package/dist/operations/financial-reports.js +29 -8
- package/dist/operations/financial-reports.js.map +1 -1
- package/dist/operations/recurrings.d.ts +28 -0
- package/dist/operations/recurrings.d.ts.map +1 -0
- package/dist/operations/recurrings.js +77 -0
- package/dist/operations/recurrings.js.map +1 -0
- package/dist/scope-probes.d.ts +12 -0
- package/dist/scope-probes.d.ts.map +1 -0
- package/dist/scope-probes.js +30 -0
- package/dist/scope-probes.js.map +1 -0
- package/dist/tools/bookkeeping.d.ts.map +1 -1
- package/dist/tools/bookkeeping.js +22 -2
- package/dist/tools/bookkeeping.js.map +1 -1
- package/dist/tools/recurrings.d.ts +3 -0
- package/dist/tools/recurrings.d.ts.map +1 -0
- package/dist/tools/recurrings.js +146 -0
- package/dist/tools/recurrings.js.map +1 -0
- package/dist/tools/status.d.ts.map +1 -1
- package/dist/tools/status.js +10 -17
- package/dist/tools/status.js.map +1 -1
- package/dist/tools/suppliers.d.ts.map +1 -1
- package/dist/tools/suppliers.js +52 -19
- package/dist/tools/suppliers.js.map +1 -1
- package/dist/views.d.ts +4 -0
- package/dist/views.d.ts.map +1 -1
- package/dist/views.js +36 -1
- package/dist/views.js.map +1 -1
- package/package.json +8 -6
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One cheap read endpoint per OAuth scope, used by `noxctl doctor` and
|
|
3
|
+
* `fortnox_status` to check what the current credentials are actually
|
|
4
|
+
* authorized for.
|
|
5
|
+
*
|
|
6
|
+
* Shared by both callers so the two cannot drift. A scope with no probe here
|
|
7
|
+
* used to be skipped silently while still counting toward "all N scopes
|
|
8
|
+
* authorized"; both callers now report it as "not checked" instead, and the
|
|
9
|
+
* scope-probes test asserts this map matches the requestable scope sets exactly.
|
|
10
|
+
*/
|
|
11
|
+
export declare const scopeProbeEndpoints: Record<string, string>;
|
|
12
|
+
//# sourceMappingURL=scope-probes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-probes.d.ts","sourceRoot":"","sources":["../src/scope-probes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkBtD,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One cheap read endpoint per OAuth scope, used by `noxctl doctor` and
|
|
3
|
+
* `fortnox_status` to check what the current credentials are actually
|
|
4
|
+
* authorized for.
|
|
5
|
+
*
|
|
6
|
+
* Shared by both callers so the two cannot drift. A scope with no probe here
|
|
7
|
+
* used to be skipped silently while still counting toward "all N scopes
|
|
8
|
+
* authorized"; both callers now report it as "not checked" instead, and the
|
|
9
|
+
* scope-probes test asserts this map matches the requestable scope sets exactly.
|
|
10
|
+
*/
|
|
11
|
+
export const scopeProbeEndpoints = {
|
|
12
|
+
article: 'articles?limit=1',
|
|
13
|
+
customer: 'customers?limit=1',
|
|
14
|
+
invoice: 'invoices?limit=1',
|
|
15
|
+
payment: 'invoicepayments?limit=1',
|
|
16
|
+
offer: 'offers?limit=1',
|
|
17
|
+
order: 'orders?limit=1',
|
|
18
|
+
supplier: 'suppliers?limit=1',
|
|
19
|
+
supplierinvoice: 'supplierinvoices?limit=1',
|
|
20
|
+
bookkeeping: 'vouchers?limit=1',
|
|
21
|
+
companyinformation: 'companyinformation',
|
|
22
|
+
settings: 'settings/company',
|
|
23
|
+
project: 'projects?limit=1',
|
|
24
|
+
costcenter: 'costcenters?limit=1',
|
|
25
|
+
price: 'pricelists?limit=1',
|
|
26
|
+
inbox: 'inbox',
|
|
27
|
+
connectfile: 'voucherfileconnections?limit=1',
|
|
28
|
+
salary: 'employees?limit=1',
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=scope-probes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-probes.js","sourceRoot":"","sources":["../src/scope-probes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE,mBAAmB;IAC7B,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,yBAAyB;IAClC,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE,mBAAmB;IAC7B,eAAe,EAAE,0BAA0B;IAC3C,WAAW,EAAE,kBAAkB;IAC/B,kBAAkB,EAAE,oBAAoB;IACxC,QAAQ,EAAE,kBAAkB;IAC5B,OAAO,EAAE,kBAAkB;IAC3B,UAAU,EAAE,qBAAqB;IACjC,KAAK,EAAE,oBAAoB;IAC3B,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,gCAAgC;IAC7C,MAAM,EAAE,mBAAmB;CAC5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookkeeping.d.ts","sourceRoot":"","sources":["../../src/tools/bookkeeping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"bookkeeping.d.ts","sourceRoot":"","sources":["../../src/tools/bookkeeping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2DpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmJhE"}
|
|
@@ -3,11 +3,31 @@ import { listAccounts } from '../operations/accounts.js';
|
|
|
3
3
|
import { listVouchers, getVoucher, createVoucher, attachVoucherFiles, } from '../operations/vouchers.js';
|
|
4
4
|
import { accountListColumns, voucherDetailColumns, voucherListColumns, voucherRowColumns, } from '../views.js';
|
|
5
5
|
import { detailResponse, dryRunResponse, listResponse, requireConfirmation, textResponse, } from '../tool-output.js';
|
|
6
|
+
// The full writable VoucherRow field set (Fortnox `VoucherRowSinglePayloadItem`).
|
|
7
|
+
// The MCP SDK strips any key the schema does not declare, so an undeclared field
|
|
8
|
+
// reaches neither Fortnox nor an error message — a per-line note passed as
|
|
9
|
+
// TransactionInformation simply vanished and the voucher booked without it
|
|
10
|
+
// (#101). createVoucher() forwards rows verbatim, so this schema is the only
|
|
11
|
+
// place fields were being lost.
|
|
6
12
|
const VoucherRowSchema = z.object({
|
|
7
13
|
Account: z.number().describe('Kontonummer'),
|
|
8
14
|
Debit: z.number().optional().describe('Debetbelopp'),
|
|
9
15
|
Credit: z.number().optional().describe('Kreditbelopp'),
|
|
10
|
-
Description: z
|
|
16
|
+
Description: z
|
|
17
|
+
.string()
|
|
18
|
+
.optional()
|
|
19
|
+
.describe('Radbeskrivning. OBS: Fortnox fyller normalt detta fält med kontots egen registrerade benämning, oavsett vad som skickas. Använd TransactionInformation för fritext per rad.'),
|
|
20
|
+
TransactionInformation: z
|
|
21
|
+
.string()
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('Fritext för just denna rad (vem, vad, varför). Detta är det fria textfältet per rad — till skillnad från Description, som normalt speglar kontots egen benämning.'),
|
|
24
|
+
CostCenter: z.string().optional().describe('Kostnadsställe för denna rad'),
|
|
25
|
+
Project: z.string().optional().describe('Projektnummer för denna rad'),
|
|
26
|
+
Quantity: z.number().optional().describe('Antal (används av vissa kontotyper)'),
|
|
27
|
+
Removed: z
|
|
28
|
+
.boolean()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe('Markerar raden som makulerad. Sätts normalt inte vid skapande.'),
|
|
11
31
|
});
|
|
12
32
|
const VoucherSeriesSchema = z
|
|
13
33
|
.string()
|
|
@@ -35,7 +55,7 @@ export function registerBookkeepingTools(server) {
|
|
|
35
55
|
});
|
|
36
56
|
return listResponse(data.Vouchers ?? [], voucherListColumns, data, data.MetaInformation, includeRaw);
|
|
37
57
|
});
|
|
38
|
-
server.tool('fortnox_get_voucher', 'Hämta en enskild verifikation med rader från Fortnox. Returnerar: VoucherSeries, VoucherNumber, TransactionDate, Description, samt VoucherRows med Account, Debit, Credit.', {
|
|
58
|
+
server.tool('fortnox_get_voucher', 'Hämta en enskild verifikation med rader från Fortnox. Returnerar: VoucherSeries, VoucherNumber, TransactionDate, Description, samt VoucherRows med Account, Debit, Credit. Makulerade rader (Removed) märks med [REMOVED] och ska inte räknas med — de är ersatta av en annan rad i samma verifikation.', {
|
|
39
59
|
series: z.string().describe('Verifikationsserie (t.ex. "A")'),
|
|
40
60
|
voucherNumber: z.string().describe('Verifikationsnummer'),
|
|
41
61
|
financialYear: z.number().optional().describe('Räkenskapsår (default: nuvarande)'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookkeeping.js","sourceRoot":"","sources":["../../src/tools/bookkeeping.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,aAAa,EACb,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IACpD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IACtD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"bookkeeping.js","sourceRoot":"","sources":["../../src/tools/bookkeeping.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recurrings.d.ts","sourceRoot":"","sources":["../../src/tools/recurrings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmDpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8K9D"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createInvoiceRequest, createRecurring, getInvoiceRequest, getRecurring, getRecurringDeviation, listInvoiceRequests, listRecurringDeviations, listRecurrings, patchRecurring, replaceRecurring, } from '../operations/recurrings.js';
|
|
3
|
+
import { invoiceRequestDetailColumns, invoiceRequestListColumns, recurringDetailColumns, recurringListColumns, } from '../views.js';
|
|
4
|
+
import { detailResponse, dryRunResponse, listResponse, requireConfirmation, } from '../tool-output.js';
|
|
5
|
+
const recurringId = z.string().uuid().describe('Återkommande faktureringens UUID');
|
|
6
|
+
const objectInput = z
|
|
7
|
+
.record(z.string(), z.unknown())
|
|
8
|
+
.describe('JSON-objekt enligt Fortnox Recurring API');
|
|
9
|
+
const patchOperation = z
|
|
10
|
+
.object({
|
|
11
|
+
op: z.enum(['add', 'remove', 'replace']).describe('JSON Patch-åtgärd'),
|
|
12
|
+
path: z.string().startsWith('/').describe('JSON Pointer-sökväg'),
|
|
13
|
+
value: z.unknown().optional().describe('Nytt värde (ej för remove)'),
|
|
14
|
+
})
|
|
15
|
+
.passthrough();
|
|
16
|
+
function withMetadata(result) {
|
|
17
|
+
return {
|
|
18
|
+
...result.recurring,
|
|
19
|
+
...(result.etag ? { etag: result.etag } : {}),
|
|
20
|
+
...(result.lastModified ? { last_modified: result.lastModified } : {}),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function registerRecurringTools(server) {
|
|
24
|
+
server.tool('fortnox_list_recurrings', 'Lista återkommande faktureringar från Fortnox nya Recurring Billing API.', {
|
|
25
|
+
customerNumbers: z.array(z.string()).optional().describe('Filtrera på kundnummer'),
|
|
26
|
+
statuses: z.array(z.string()).optional().describe('Filtrera på status, t.ex. ACTIVE'),
|
|
27
|
+
invoiceHandlings: z.array(z.string()).optional().describe('Filtrera på fakturahantering'),
|
|
28
|
+
errorStatus: z.string().optional().describe('Filtrera på felstatus'),
|
|
29
|
+
offset: z.number().int().min(0).optional().describe('Antal rader att hoppa över'),
|
|
30
|
+
limit: z.number().int().min(1).max(100).optional().describe('Antal resultat (1–100)'),
|
|
31
|
+
sortBy: z.string().optional().describe('Fält att sortera på'),
|
|
32
|
+
order: z.enum(['ASC', 'DESC']).optional().describe('Sorteringsriktning'),
|
|
33
|
+
includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
|
|
34
|
+
}, async ({ includeRaw, ...params }) => {
|
|
35
|
+
const data = await listRecurrings(params);
|
|
36
|
+
return listResponse(data, recurringListColumns, data, undefined, includeRaw);
|
|
37
|
+
});
|
|
38
|
+
server.tool('fortnox_get_recurring', 'Hämta en återkommande fakturering. Svaret inkluderar ETag som krävs för uppdatering.', { recurringId, includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox') }, async ({ recurringId, includeRaw }) => {
|
|
39
|
+
const result = await getRecurring(recurringId);
|
|
40
|
+
const data = withMetadata(result);
|
|
41
|
+
return detailResponse(data, recurringDetailColumns, data, includeRaw);
|
|
42
|
+
});
|
|
43
|
+
server.tool('fortnox_create_recurring', 'Skapa en återkommande fakturering. Kräver dates, customer och minst en rad enligt Recurring API.', {
|
|
44
|
+
input: objectInput,
|
|
45
|
+
confirm: z.boolean().optional().describe('Bekräfta skapandet'),
|
|
46
|
+
dryRun: z.boolean().optional().describe('Visa begäran utan att skapa'),
|
|
47
|
+
includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
|
|
48
|
+
}, async ({ input, confirm, dryRun, includeRaw }) => {
|
|
49
|
+
if (dryRun)
|
|
50
|
+
return dryRunResponse('create recurring', input);
|
|
51
|
+
if (!confirm)
|
|
52
|
+
requireConfirmation('create recurring');
|
|
53
|
+
const result = await createRecurring(input);
|
|
54
|
+
const data = withMetadata(result);
|
|
55
|
+
return detailResponse(data, recurringDetailColumns, data, includeRaw);
|
|
56
|
+
});
|
|
57
|
+
server.tool('fortnox_replace_recurring', 'Ersätt en återkommande fakturering. ETag från fortnox_get_recurring krävs för att undvika att skriva över andras ändringar.', {
|
|
58
|
+
recurringId,
|
|
59
|
+
etag: z.string().min(1).describe('ETag från senaste hämtningen'),
|
|
60
|
+
input: objectInput,
|
|
61
|
+
ifUnmodifiedSince: z
|
|
62
|
+
.string()
|
|
63
|
+
.optional()
|
|
64
|
+
.describe('Valfri Last-Modified-kontroll från senaste hämtningen'),
|
|
65
|
+
confirm: z.boolean().optional().describe('Bekräfta ersättningen'),
|
|
66
|
+
dryRun: z.boolean().optional().describe('Visa begäran utan att uppdatera'),
|
|
67
|
+
includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
|
|
68
|
+
}, async ({ recurringId, etag, input, ifUnmodifiedSince, confirm, dryRun, includeRaw }) => {
|
|
69
|
+
if (dryRun)
|
|
70
|
+
return dryRunResponse(`replace recurring ${recurringId}`, input);
|
|
71
|
+
if (!confirm)
|
|
72
|
+
requireConfirmation(`replace recurring ${recurringId}`);
|
|
73
|
+
const result = await replaceRecurring(recurringId, etag, input, ifUnmodifiedSince);
|
|
74
|
+
const data = withMetadata(result);
|
|
75
|
+
return detailResponse(data, recurringDetailColumns, data, includeRaw);
|
|
76
|
+
});
|
|
77
|
+
server.tool('fortnox_patch_recurring', 'Ändra utvalda fält i en återkommande fakturering med JSON Patch. ETag krävs.', {
|
|
78
|
+
recurringId,
|
|
79
|
+
etag: z.string().min(1).describe('ETag från senaste hämtningen'),
|
|
80
|
+
operations: z.array(patchOperation).min(1).describe('JSON Patch-operationer'),
|
|
81
|
+
ifUnmodifiedSince: z.string().optional().describe('Valfri Last-Modified-kontroll'),
|
|
82
|
+
confirm: z.boolean().optional().describe('Bekräfta uppdateringen'),
|
|
83
|
+
dryRun: z.boolean().optional().describe('Visa begäran utan att uppdatera'),
|
|
84
|
+
includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
|
|
85
|
+
}, async ({ recurringId, etag, operations, ifUnmodifiedSince, confirm, dryRun, includeRaw }) => {
|
|
86
|
+
if (dryRun)
|
|
87
|
+
return dryRunResponse(`patch recurring ${recurringId}`, operations);
|
|
88
|
+
if (!confirm)
|
|
89
|
+
requireConfirmation(`patch recurring ${recurringId}`);
|
|
90
|
+
const result = await patchRecurring(recurringId, etag, operations, ifUnmodifiedSince);
|
|
91
|
+
const data = withMetadata(result);
|
|
92
|
+
return detailResponse(data, recurringDetailColumns, data, includeRaw);
|
|
93
|
+
});
|
|
94
|
+
server.tool('fortnox_list_recurring_deviations', 'Lista avvikelser för en återkommande fakturering.', { recurringId, includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox') }, async ({ recurringId, includeRaw }) => {
|
|
95
|
+
const data = await listRecurringDeviations(recurringId);
|
|
96
|
+
return listResponse(data, recurringListColumns, data, undefined, includeRaw);
|
|
97
|
+
});
|
|
98
|
+
server.tool('fortnox_get_recurring_deviation', 'Hämta en specifik avvikelse för en återkommande fakturering.', {
|
|
99
|
+
recurringId,
|
|
100
|
+
deviationId: z.string().uuid().describe('Avvikelsens UUID'),
|
|
101
|
+
includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
|
|
102
|
+
}, async ({ recurringId, deviationId, includeRaw }) => {
|
|
103
|
+
const data = await getRecurringDeviation(recurringId, deviationId);
|
|
104
|
+
return detailResponse(data, recurringDetailColumns, data, includeRaw);
|
|
105
|
+
});
|
|
106
|
+
server.tool('fortnox_list_recurring_invoice_requests', 'Lista fakturabegäranden för en eller flera återkommande faktureringar.', {
|
|
107
|
+
recurringIds: z
|
|
108
|
+
.array(z.string().uuid())
|
|
109
|
+
.min(1)
|
|
110
|
+
.max(100)
|
|
111
|
+
.describe('Återkommande faktureringars UUID:er'),
|
|
112
|
+
statuses: z.array(z.string()).optional().describe('Filtrera på status'),
|
|
113
|
+
includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
|
|
114
|
+
}, async ({ recurringIds, statuses, includeRaw }) => {
|
|
115
|
+
const data = await listInvoiceRequests(recurringIds, statuses);
|
|
116
|
+
return listResponse(data, invoiceRequestListColumns, data, undefined, includeRaw);
|
|
117
|
+
});
|
|
118
|
+
server.tool('fortnox_get_recurring_invoice_request', 'Hämta status och resultat för en fakturabegäran.', {
|
|
119
|
+
invoiceRequestId: z.string().uuid().describe('Fakturabegärans UUID'),
|
|
120
|
+
includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
|
|
121
|
+
}, async ({ invoiceRequestId, includeRaw }) => {
|
|
122
|
+
const data = await getInvoiceRequest(invoiceRequestId);
|
|
123
|
+
return detailResponse(data, invoiceRequestDetailColumns, data, includeRaw);
|
|
124
|
+
});
|
|
125
|
+
server.tool('fortnox_create_recurring_invoice_request', 'Skapa fakturor för återkommande faktureringar. ASYNC behövs för fler än 100 ID:n.', {
|
|
126
|
+
recurringIds: z
|
|
127
|
+
.array(z.string().uuid())
|
|
128
|
+
.min(1)
|
|
129
|
+
.describe('Återkommande faktureringars UUID:er'),
|
|
130
|
+
processingMode: z.enum(['SYNC', 'ASYNC']).optional().describe('SYNC (default) eller ASYNC'),
|
|
131
|
+
confirm: z.boolean().optional().describe('Bekräfta att fakturor ska skapas'),
|
|
132
|
+
dryRun: z.boolean().optional().describe('Visa begäran utan att skapa fakturor'),
|
|
133
|
+
includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
|
|
134
|
+
}, async ({ recurringIds, processingMode, confirm, dryRun, includeRaw }) => {
|
|
135
|
+
if (dryRun)
|
|
136
|
+
return dryRunResponse('create recurring invoice request', {
|
|
137
|
+
recurring_ids: recurringIds,
|
|
138
|
+
processing_mode: processingMode ?? 'SYNC',
|
|
139
|
+
});
|
|
140
|
+
if (!confirm)
|
|
141
|
+
requireConfirmation('create recurring invoice request');
|
|
142
|
+
const data = await createInvoiceRequest(recurringIds, processingMode);
|
|
143
|
+
return detailResponse(data, invoiceRequestDetailColumns, data, includeRaw);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=recurrings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recurrings.js","sourceRoot":"","sources":["../../src/tools/recurrings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6H3D"}
|
package/dist/tools/status.js
CHANGED
|
@@ -70,26 +70,16 @@ export function registerStatusTools(server) {
|
|
|
70
70
|
// 7. Scope validation
|
|
71
71
|
const { effectiveScopes } = await import('../auth.js');
|
|
72
72
|
const { fortnoxRequest, FortnoxApiError } = await import('../fortnox-client.js');
|
|
73
|
-
const
|
|
74
|
-
article: 'articles?limit=1',
|
|
75
|
-
customer: 'customers?limit=1',
|
|
76
|
-
invoice: 'invoices?limit=1',
|
|
77
|
-
payment: 'invoicepayments?limit=1',
|
|
78
|
-
supplier: 'suppliers?limit=1',
|
|
79
|
-
supplierinvoice: 'supplierinvoices?limit=1',
|
|
80
|
-
bookkeeping: 'vouchers?limit=1',
|
|
81
|
-
companyinformation: 'companyinformation',
|
|
82
|
-
settings: 'settings/company',
|
|
83
|
-
inbox: 'inbox',
|
|
84
|
-
connectfile: 'voucherfileconnections?limit=1',
|
|
85
|
-
salary: 'employees?limit=1',
|
|
86
|
-
};
|
|
73
|
+
const { scopeProbeEndpoints } = await import('../scope-probes.js');
|
|
87
74
|
const required = effectiveScopes(creds).split(' ');
|
|
88
75
|
const missing = [];
|
|
76
|
+
const unchecked = [];
|
|
89
77
|
for (const scope of required) {
|
|
90
|
-
const endpoint =
|
|
91
|
-
if (!endpoint)
|
|
78
|
+
const endpoint = scopeProbeEndpoints[scope];
|
|
79
|
+
if (!endpoint) {
|
|
80
|
+
unchecked.push(scope);
|
|
92
81
|
continue;
|
|
82
|
+
}
|
|
93
83
|
try {
|
|
94
84
|
await fortnoxRequest(endpoint);
|
|
95
85
|
}
|
|
@@ -103,7 +93,10 @@ export function registerStatusTools(server) {
|
|
|
103
93
|
}
|
|
104
94
|
}
|
|
105
95
|
if (missing.length === 0) {
|
|
106
|
-
|
|
96
|
+
const checked = required.length - unchecked.length;
|
|
97
|
+
pass('Scopes', unchecked.length === 0
|
|
98
|
+
? `all ${checked} scopes authorized`
|
|
99
|
+
: `${checked} scopes authorized; not checked: ${unchecked.join(', ')}`);
|
|
107
100
|
}
|
|
108
101
|
else {
|
|
109
102
|
fail('Scopes', `missing: ${missing.join(', ')}. Enable them in your Fortnox app at developer.fortnox.se`);
|
package/dist/tools/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suppliers.d.ts","sourceRoot":"","sources":["../../src/tools/suppliers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"suppliers.d.ts","sourceRoot":"","sources":["../../src/tools/suppliers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkEpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoF7D"}
|
package/dist/tools/suppliers.js
CHANGED
|
@@ -2,6 +2,55 @@ import { z } from 'zod';
|
|
|
2
2
|
import { listSuppliers, getSupplier, createSupplier, updateSupplier, } from '../operations/suppliers.js';
|
|
3
3
|
import { supplierListColumns, supplierDetailColumns } from '../views.js';
|
|
4
4
|
import { detailResponse, dryRunResponse, listResponse, requireConfirmation, } from '../tool-output.js';
|
|
5
|
+
// The full writable Supplier field set (Fortnox `SupplierSinglePayloadItem`).
|
|
6
|
+
// The MCP SDK silently strips any argument the schema does not declare, so a
|
|
7
|
+
// field missing here never reaches Fortnox and never raises an error — it just
|
|
8
|
+
// vanishes (#96). The operations layer forwards whatever it is given.
|
|
9
|
+
const supplierWritableFields = {
|
|
10
|
+
Name: z.string().optional().describe('Leverantörsnamn'),
|
|
11
|
+
OrganisationNumber: z.string().optional().describe('Organisationsnummer'),
|
|
12
|
+
Email: z.string().optional().describe('E-postadress'),
|
|
13
|
+
Phone1: z.string().optional().describe('Telefonnummer'),
|
|
14
|
+
Phone2: z.string().optional().describe('Alternativt telefonnummer'),
|
|
15
|
+
Fax: z.string().optional().describe('Faxnummer'),
|
|
16
|
+
WWW: z.string().optional().describe('Webbplats'),
|
|
17
|
+
Address1: z.string().optional().describe('Adressrad 1'),
|
|
18
|
+
Address2: z.string().optional().describe('Adressrad 2'),
|
|
19
|
+
ZipCode: z.string().optional().describe('Postnummer'),
|
|
20
|
+
City: z.string().optional().describe('Ort'),
|
|
21
|
+
Country: z.string().optional().describe('Land'),
|
|
22
|
+
CountryCode: z.string().optional().describe('Landskod (t.ex. "SE")'),
|
|
23
|
+
VisitingAddress: z.string().optional().describe('Besöksadress'),
|
|
24
|
+
VisitingZipCode: z.string().optional().describe('Besöksadress postnummer'),
|
|
25
|
+
VisitingCity: z.string().optional().describe('Besöksadress ort'),
|
|
26
|
+
VisitingCountry: z.string().optional().describe('Besöksadress land'),
|
|
27
|
+
VisitingCountryCode: z.string().optional().describe('Besöksadress landskod'),
|
|
28
|
+
OurReference: z.string().optional().describe('Vår referens'),
|
|
29
|
+
YourReference: z.string().optional().describe('Er referens'),
|
|
30
|
+
OurCustomerNumber: z.string().optional().describe('Vårt kundnummer hos leverantören'),
|
|
31
|
+
Comments: z.string().optional().describe('Kommentarer'),
|
|
32
|
+
Currency: z.string().optional().describe('Valuta (t.ex. "SEK")'),
|
|
33
|
+
TermsOfPayment: z.string().optional().describe('Betalningsvillkor (kod)'),
|
|
34
|
+
VATNumber: z.string().optional().describe('Momsregistreringsnummer'),
|
|
35
|
+
VATType: z
|
|
36
|
+
.string()
|
|
37
|
+
.optional()
|
|
38
|
+
.describe('Momstyp (t.ex. "SEVAT", "SEREVERSEDVAT", "EUREVERSEDVAT")'),
|
|
39
|
+
PreDefinedAccount: z.string().optional().describe('Fördefinierat konto'),
|
|
40
|
+
CostCenter: z.string().optional().describe('Kostnadsställe'),
|
|
41
|
+
Project: z.string().optional().describe('Projektnummer'),
|
|
42
|
+
BankAccountNumber: z.string().optional().describe('Bankkontonummer'),
|
|
43
|
+
Bank: z.string().optional().describe('Bank'),
|
|
44
|
+
BG: z.string().optional().describe('Bankgiro'),
|
|
45
|
+
PG: z.string().optional().describe('Plusgiro'),
|
|
46
|
+
BIC: z.string().optional().describe('BIC/SWIFT'),
|
|
47
|
+
IBAN: z.string().optional().describe('IBAN'),
|
|
48
|
+
ClearingNumber: z.string().optional().describe('Clearingnummer'),
|
|
49
|
+
BranchCode: z.string().optional().describe('Bankkod (utländska betalningar)'),
|
|
50
|
+
DisablePaymentFile: z.boolean().optional().describe('Uteslut från betalningsfil'),
|
|
51
|
+
WorkPlace: z.string().optional().describe('Arbetsplats'),
|
|
52
|
+
Active: z.boolean().optional().describe('Aktiv leverantör'),
|
|
53
|
+
};
|
|
5
54
|
export function registerSupplierTools(server) {
|
|
6
55
|
server.tool('fortnox_list_suppliers', 'Lista/sök leverantörer i Fortnox. Returnerar: SupplierNumber, Name, OrganisationNumber, City, Email.', {
|
|
7
56
|
search: z.string().optional().describe('Sökterm (namn)'),
|
|
@@ -21,16 +70,9 @@ export function registerSupplierTools(server) {
|
|
|
21
70
|
return detailResponse(data, supplierDetailColumns, data, includeRaw);
|
|
22
71
|
});
|
|
23
72
|
server.tool('fortnox_create_supplier', 'Skapa en ny leverantör i Fortnox', {
|
|
73
|
+
...supplierWritableFields,
|
|
24
74
|
Name: z.string().describe('Leverantörsnamn'),
|
|
25
|
-
|
|
26
|
-
Email: z.string().optional().describe('E-postadress'),
|
|
27
|
-
Phone1: z.string().optional().describe('Telefonnummer'),
|
|
28
|
-
Address1: z.string().optional().describe('Adressrad 1'),
|
|
29
|
-
ZipCode: z.string().optional().describe('Postnummer'),
|
|
30
|
-
City: z.string().optional().describe('Ort'),
|
|
31
|
-
BankAccountNumber: z.string().optional().describe('Bankkontonummer'),
|
|
32
|
-
BG: z.string().optional().describe('Bankgiro'),
|
|
33
|
-
PG: z.string().optional().describe('Plusgiro'),
|
|
75
|
+
SupplierNumber: z.string().optional().describe('Leverantörsnummer (default: nästa lediga)'),
|
|
34
76
|
confirm: z.boolean().optional().describe('Bekräfta att leverantören ska skapas'),
|
|
35
77
|
dryRun: z
|
|
36
78
|
.boolean()
|
|
@@ -48,16 +90,7 @@ export function registerSupplierTools(server) {
|
|
|
48
90
|
});
|
|
49
91
|
server.tool('fortnox_update_supplier', 'Uppdatera en befintlig leverantör i Fortnox', {
|
|
50
92
|
supplierNumber: z.string().describe('Leverantörsnummer att uppdatera'),
|
|
51
|
-
|
|
52
|
-
OrganisationNumber: z.string().optional().describe('Organisationsnummer'),
|
|
53
|
-
Email: z.string().optional().describe('E-postadress'),
|
|
54
|
-
Phone1: z.string().optional().describe('Telefonnummer'),
|
|
55
|
-
Address1: z.string().optional().describe('Adressrad 1'),
|
|
56
|
-
ZipCode: z.string().optional().describe('Postnummer'),
|
|
57
|
-
City: z.string().optional().describe('Ort'),
|
|
58
|
-
BankAccountNumber: z.string().optional().describe('Bankkontonummer'),
|
|
59
|
-
BG: z.string().optional().describe('Bankgiro'),
|
|
60
|
-
PG: z.string().optional().describe('Plusgiro'),
|
|
93
|
+
...supplierWritableFields,
|
|
61
94
|
confirm: z.boolean().optional().describe('Bekräfta att leverantören ska uppdateras'),
|
|
62
95
|
dryRun: z
|
|
63
96
|
.boolean()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suppliers.js","sourceRoot":"","sources":["../../src/tools/suppliers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EACL,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,
|
|
1
|
+
{"version":3,"file":"suppliers.js","sourceRoot":"","sources":["../../src/tools/suppliers.ts"],"names":[],"mappings":"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"}
|
package/dist/views.d.ts
CHANGED
|
@@ -41,6 +41,10 @@ export declare const financialYearDetailColumns: Column[];
|
|
|
41
41
|
export declare const lockedPeriodDetailColumns: Column[];
|
|
42
42
|
export declare const contractListColumns: Column[];
|
|
43
43
|
export declare const contractDetailColumns: Column[];
|
|
44
|
+
export declare const recurringListColumns: Column[];
|
|
45
|
+
export declare const recurringDetailColumns: Column[];
|
|
46
|
+
export declare const invoiceRequestListColumns: Column[];
|
|
47
|
+
export declare const invoiceRequestDetailColumns: Column[];
|
|
44
48
|
export declare const topCustomerColumns: Column[];
|
|
45
49
|
export declare const monthlyRevenueColumns: Column[];
|
|
46
50
|
export declare const voucherAttachmentColumns: Column[];
|
package/dist/views.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../src/views.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAO7C,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAOtC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,EAaxC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,EAOzC,CAAC;AAKF,eAAO,MAAM,mBAAmB,EAAE,MAAM,EAMvC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,EAWzC,CAAC;AAKF,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAKtC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,EAKxC,CAAC;
|
|
1
|
+
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../src/views.ts"],"names":[],"mappings":"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"}
|
package/dist/views.js
CHANGED
|
@@ -66,12 +66,20 @@ export const voucherDetailColumns = [
|
|
|
66
66
|
{ key: 'TransactionDate', header: 'Date', width: 10 },
|
|
67
67
|
{ key: 'Description', header: 'Description', width: 50 },
|
|
68
68
|
];
|
|
69
|
+
// Fortnox can void a single voucher row (`Removed: true`) without deleting it —
|
|
70
|
+
// the replacement row stays in the same voucher. Rendered plainly, a voided line
|
|
71
|
+
// is indistinguishable from a live one and reads as a double-booking, so mark it
|
|
72
|
+
// up front where truncation cannot hide it.
|
|
73
|
+
const voucherRowDescription = (value, row) => {
|
|
74
|
+
const text = String(value ?? '');
|
|
75
|
+
return row.Removed === true ? `[REMOVED] ${text}`.trimEnd() : text;
|
|
76
|
+
};
|
|
69
77
|
// 8 + 2 + 12 + 2 + 12 + 2 + 30 = 68
|
|
70
78
|
export const voucherRowColumns = [
|
|
71
79
|
{ key: 'Account', header: 'Account', width: 8, align: 'right' },
|
|
72
80
|
{ key: 'Debit', header: 'Debit', width: 12, align: 'right', format: currency },
|
|
73
81
|
{ key: 'Credit', header: 'Credit', width: 12, align: 'right', format: currency },
|
|
74
|
-
{ key: 'Description', header: 'Description', width: 30 },
|
|
82
|
+
{ key: 'Description', header: 'Description', width: 30, format: voucherRowDescription },
|
|
75
83
|
];
|
|
76
84
|
// --- Article views (target ≤80 cols) ---
|
|
77
85
|
// 10 + 2 + 30 + 2 + 10 + 2 + 6 + 2 + 10 = 74
|
|
@@ -378,6 +386,33 @@ export const contractDetailColumns = [
|
|
|
378
386
|
{ key: 'TotalVAT', header: 'VAT', width: 12, align: 'right', format: currency },
|
|
379
387
|
{ key: 'Comments', header: 'Comments', width: 40 },
|
|
380
388
|
];
|
|
389
|
+
// --- Recurring billing views ---
|
|
390
|
+
export const recurringListColumns = [
|
|
391
|
+
{ key: 'serial_number', header: '#', width: 7, align: 'right' },
|
|
392
|
+
{ key: 'id', header: 'ID', width: 36 },
|
|
393
|
+
{ key: 'status', header: 'Status', width: 12 },
|
|
394
|
+
{ key: 'invoice_handling', header: 'Handling', width: 12 },
|
|
395
|
+
{ key: 'created_at', header: 'Created', width: 20 },
|
|
396
|
+
];
|
|
397
|
+
export const recurringDetailColumns = [
|
|
398
|
+
{ key: 'id', header: 'ID', width: 36 },
|
|
399
|
+
{ key: 'serial_number', header: 'Serial #', width: 10, align: 'right' },
|
|
400
|
+
{ key: 'status', header: 'Status', width: 12 },
|
|
401
|
+
{ key: 'invoice_handling', header: 'Invoice handling', width: 16 },
|
|
402
|
+
{ key: 'amount_per_invoicing', header: 'Periods/invoice', width: 10, align: 'right' },
|
|
403
|
+
{ key: 'created_at', header: 'Created', width: 20 },
|
|
404
|
+
{ key: 'modified_at', header: 'Modified', width: 20 },
|
|
405
|
+
{ key: 'etag', header: 'ETag', width: 36 },
|
|
406
|
+
{ key: 'last_modified', header: 'Last-Modified', width: 29 },
|
|
407
|
+
];
|
|
408
|
+
export const invoiceRequestListColumns = [
|
|
409
|
+
{ key: 'id', header: 'ID', width: 36 },
|
|
410
|
+
{ key: 'status', header: 'Status', width: 12 },
|
|
411
|
+
{ key: 'processing_mode', header: 'Mode', width: 8 },
|
|
412
|
+
{ key: 'created_at', header: 'Created', width: 20 },
|
|
413
|
+
{ key: 'processed_at', header: 'Processed', width: 20 },
|
|
414
|
+
];
|
|
415
|
+
export const invoiceRequestDetailColumns = invoiceRequestListColumns;
|
|
381
416
|
// --- Analytics views ---
|
|
382
417
|
export const topCustomerColumns = [
|
|
383
418
|
{ key: 'CustomerNumber', header: 'Cust #', width: 8, align: 'right' },
|