noxctl 0.1.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 (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +326 -0
  3. package/dist/auth.d.ts +29 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +267 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +1012 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/credentials-store.d.ts +4 -0
  12. package/dist/credentials-store.d.ts.map +1 -0
  13. package/dist/credentials-store.js +223 -0
  14. package/dist/credentials-store.js.map +1 -0
  15. package/dist/formatter.d.ts +62 -0
  16. package/dist/formatter.d.ts.map +1 -0
  17. package/dist/formatter.js +200 -0
  18. package/dist/formatter.js.map +1 -0
  19. package/dist/fortnox-client.d.ts +27 -0
  20. package/dist/fortnox-client.d.ts.map +1 -0
  21. package/dist/fortnox-client.js +178 -0
  22. package/dist/fortnox-client.js.map +1 -0
  23. package/dist/identifiers.d.ts +4 -0
  24. package/dist/identifiers.d.ts.map +1 -0
  25. package/dist/identifiers.js +16 -0
  26. package/dist/identifiers.js.map +1 -0
  27. package/dist/index.d.ts +4 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +43 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/operations/accounts.d.ts +18 -0
  32. package/dist/operations/accounts.d.ts.map +1 -0
  33. package/dist/operations/accounts.js +28 -0
  34. package/dist/operations/accounts.js.map +1 -0
  35. package/dist/operations/articles.d.ts +20 -0
  36. package/dist/operations/articles.d.ts.map +1 -0
  37. package/dist/operations/articles.js +36 -0
  38. package/dist/operations/articles.js.map +1 -0
  39. package/dist/operations/company.d.ts +2 -0
  40. package/dist/operations/company.d.ts.map +1 -0
  41. package/dist/operations/company.js +6 -0
  42. package/dist/operations/company.js.map +1 -0
  43. package/dist/operations/customers.d.ts +20 -0
  44. package/dist/operations/customers.d.ts.map +1 -0
  45. package/dist/operations/customers.js +37 -0
  46. package/dist/operations/customers.js.map +1 -0
  47. package/dist/operations/financial-reports.d.ts +37 -0
  48. package/dist/operations/financial-reports.d.ts.map +1 -0
  49. package/dist/operations/financial-reports.js +193 -0
  50. package/dist/operations/financial-reports.js.map +1 -0
  51. package/dist/operations/invoices.d.ts +32 -0
  52. package/dist/operations/invoices.d.ts.map +1 -0
  53. package/dist/operations/invoices.js +74 -0
  54. package/dist/operations/invoices.js.map +1 -0
  55. package/dist/operations/supplier-invoices.d.ts +23 -0
  56. package/dist/operations/supplier-invoices.d.ts.map +1 -0
  57. package/dist/operations/supplier-invoices.js +36 -0
  58. package/dist/operations/supplier-invoices.js.map +1 -0
  59. package/dist/operations/suppliers.d.ts +20 -0
  60. package/dist/operations/suppliers.d.ts.map +1 -0
  61. package/dist/operations/suppliers.js +36 -0
  62. package/dist/operations/suppliers.js.map +1 -0
  63. package/dist/operations/tax.d.ts +26 -0
  64. package/dist/operations/tax.d.ts.map +1 -0
  65. package/dist/operations/tax.js +47 -0
  66. package/dist/operations/tax.js.map +1 -0
  67. package/dist/operations/vouchers.d.ts +22 -0
  68. package/dist/operations/vouchers.d.ts.map +1 -0
  69. package/dist/operations/vouchers.js +41 -0
  70. package/dist/operations/vouchers.js.map +1 -0
  71. package/dist/tool-output.d.ts +16 -0
  72. package/dist/tool-output.d.ts.map +1 -0
  73. package/dist/tool-output.js +48 -0
  74. package/dist/tool-output.js.map +1 -0
  75. package/dist/tools/articles.d.ts +3 -0
  76. package/dist/tools/articles.d.ts.map +1 -0
  77. package/dist/tools/articles.js +75 -0
  78. package/dist/tools/articles.js.map +1 -0
  79. package/dist/tools/bookkeeping.d.ts +3 -0
  80. package/dist/tools/bookkeeping.d.ts.map +1 -0
  81. package/dist/tools/bookkeeping.js +82 -0
  82. package/dist/tools/bookkeeping.js.map +1 -0
  83. package/dist/tools/company.d.ts +3 -0
  84. package/dist/tools/company.d.ts.map +1 -0
  85. package/dist/tools/company.js +13 -0
  86. package/dist/tools/company.js.map +1 -0
  87. package/dist/tools/customers.d.ts +3 -0
  88. package/dist/tools/customers.d.ts.map +1 -0
  89. package/dist/tools/customers.js +75 -0
  90. package/dist/tools/customers.js.map +1 -0
  91. package/dist/tools/financial-reports.d.ts +3 -0
  92. package/dist/tools/financial-reports.d.ts.map +1 -0
  93. package/dist/tools/financial-reports.js +35 -0
  94. package/dist/tools/financial-reports.js.map +1 -0
  95. package/dist/tools/invoices.d.ts +3 -0
  96. package/dist/tools/invoices.d.ts.map +1 -0
  97. package/dist/tools/invoices.js +160 -0
  98. package/dist/tools/invoices.js.map +1 -0
  99. package/dist/tools/status.d.ts +3 -0
  100. package/dist/tools/status.d.ts.map +1 -0
  101. package/dist/tools/status.js +109 -0
  102. package/dist/tools/status.js.map +1 -0
  103. package/dist/tools/supplier-invoices.d.ts +3 -0
  104. package/dist/tools/supplier-invoices.d.ts.map +1 -0
  105. package/dist/tools/supplier-invoices.js +88 -0
  106. package/dist/tools/supplier-invoices.js.map +1 -0
  107. package/dist/tools/suppliers.d.ts +3 -0
  108. package/dist/tools/suppliers.d.ts.map +1 -0
  109. package/dist/tools/suppliers.js +77 -0
  110. package/dist/tools/suppliers.js.map +1 -0
  111. package/dist/tools/tax.d.ts +3 -0
  112. package/dist/tools/tax.d.ts.map +1 -0
  113. package/dist/tools/tax.js +18 -0
  114. package/dist/tools/tax.js.map +1 -0
  115. package/dist/views.d.ts +19 -0
  116. package/dist/views.d.ts.map +1 -0
  117. package/dist/views.js +165 -0
  118. package/dist/views.js.map +1 -0
  119. package/package.json +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoices.js","sourceRoot":"","sources":["../../src/tools/invoices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerStatusTools(server: McpServer): void;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +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,CAuH3D"}
@@ -0,0 +1,109 @@
1
+ import { textResponse } from '../tool-output.js';
2
+ export function registerStatusTools(server) {
3
+ server.tool('fortnox_status', 'Diagnostik: kontrollera anslutning, autentisering och behörigheter (scopes). Motsvarar CLI-kommandot `noxctl doctor`.', {}, async () => {
4
+ const lines = [];
5
+ let ok = true;
6
+ function pass(label, detail) {
7
+ lines.push(`✓ ${label}${detail ? ` — ${detail}` : ''}`);
8
+ }
9
+ function fail(label, detail) {
10
+ ok = false;
11
+ lines.push(`✗ ${label}${detail ? ` — ${detail}` : ''}`);
12
+ }
13
+ // 1. Node version
14
+ const nodeVersion = process.versions.node;
15
+ const major = parseInt(nodeVersion.split('.')[0], 10);
16
+ if (major >= 20) {
17
+ pass('Node.js', `v${nodeVersion}`);
18
+ }
19
+ else {
20
+ fail('Node.js', `v${nodeVersion} (need 20+)`);
21
+ }
22
+ // 2. Credentials
23
+ const { loadCredentials } = await import('../auth.js');
24
+ const creds = await loadCredentials();
25
+ if (!creds) {
26
+ fail('Credentials', 'not found — run `noxctl init` to set up');
27
+ lines.push('');
28
+ lines.push(ok ? 'All checks passed.' : 'Some checks failed.');
29
+ return textResponse(lines.join('\n'));
30
+ }
31
+ pass('Credentials', 'found');
32
+ // 3. Client ID
33
+ if (creds.client_id) {
34
+ pass('Client ID', `${creds.client_id.slice(0, 8)}...`);
35
+ }
36
+ else {
37
+ fail('Client ID', 'missing');
38
+ }
39
+ // 4. Service account
40
+ if (creds.tenant_id) {
41
+ pass('Service account', `tenant ${creds.tenant_id}`);
42
+ }
43
+ else {
44
+ pass('Service account', 'not configured (using refresh token flow)');
45
+ }
46
+ // 5. Token expiry
47
+ const now = Date.now();
48
+ if (creds.expires_at > now) {
49
+ const minutesLeft = Math.round((creds.expires_at - now) / 60000);
50
+ pass('Access token', `valid for ~${minutesLeft} min`);
51
+ }
52
+ else {
53
+ pass('Access token', 'expired (will auto-refresh on next request)');
54
+ }
55
+ // 6. API connectivity
56
+ try {
57
+ const { getCompanyInfo } = await import('../operations/company.js');
58
+ const data = await getCompanyInfo();
59
+ const company = data;
60
+ const name = company['CompanyName'] || 'unknown';
61
+ pass('API connection', `${name}`);
62
+ }
63
+ catch (err) {
64
+ const msg = err instanceof Error ? err.message : String(err);
65
+ fail('API connection', msg);
66
+ lines.push('');
67
+ lines.push(ok ? 'All checks passed.' : 'Some checks failed.');
68
+ return textResponse(lines.join('\n'));
69
+ }
70
+ // 7. Scope validation
71
+ const { SCOPES } = await import('../auth.js');
72
+ const { fortnoxRequest, FortnoxApiError } = await import('../fortnox-client.js');
73
+ const scopeEndpoints = {
74
+ article: 'articles?limit=1',
75
+ customer: 'customers?limit=1',
76
+ invoice: 'invoices?limit=1',
77
+ supplier: 'suppliers?limit=1',
78
+ supplierinvoice: 'supplierinvoices?limit=1',
79
+ bookkeeping: 'vouchers?limit=1',
80
+ companyinformation: 'companyinformation',
81
+ settings: 'settings/company',
82
+ };
83
+ const required = SCOPES.split(' ');
84
+ const missing = [];
85
+ for (const scope of required) {
86
+ const endpoint = scopeEndpoints[scope];
87
+ if (!endpoint)
88
+ continue;
89
+ try {
90
+ await fortnoxRequest(endpoint);
91
+ }
92
+ catch (err) {
93
+ if (err instanceof FortnoxApiError && err.statusCode === 403) {
94
+ missing.push(scope);
95
+ }
96
+ }
97
+ }
98
+ if (missing.length === 0) {
99
+ pass('Scopes', `all ${required.length} scopes authorized`);
100
+ }
101
+ else {
102
+ fail('Scopes', `missing: ${missing.join(', ')}. Enable them in your Fortnox app at developer.fortnox.se`);
103
+ }
104
+ lines.push('');
105
+ lines.push(ok ? 'All checks passed.' : 'Some checks failed.');
106
+ return textResponse(lines.join('\n'));
107
+ });
108
+ }
109
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerSupplierInvoiceTools(server: McpServer): void;
3
+ //# sourceMappingURL=supplier-invoices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supplier-invoices.d.ts","sourceRoot":"","sources":["../../src/tools/supplier-invoices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2BpE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0GpE"}
@@ -0,0 +1,88 @@
1
+ import { z } from 'zod';
2
+ import { listSupplierInvoices, getSupplierInvoice, createSupplierInvoice, bookkeepSupplierInvoice, } from '../operations/supplier-invoices.js';
3
+ import { supplierInvoiceListColumns, supplierInvoiceDetailColumns, supplierInvoiceConfirmColumns, } from '../views.js';
4
+ import { detailResponse, dryRunResponse, listResponse, requireConfirmation, } from '../tool-output.js';
5
+ const SupplierInvoiceRowSchema = z.object({
6
+ Account: z.number().describe('Kontonummer'),
7
+ Debit: z.number().optional().describe('Debetbelopp'),
8
+ Credit: z.number().optional().describe('Kreditbelopp'),
9
+ Description: z.string().optional().describe('Beskrivning'),
10
+ });
11
+ export function registerSupplierInvoiceTools(server) {
12
+ server.tool('fortnox_list_supplier_invoices', 'Lista leverantörsfakturor i Fortnox. Returnerar: GivenNumber, SupplierName, InvoiceDate, DueDate, Total, Balance.', {
13
+ filter: z
14
+ .enum(['fullypaid', 'cancelled', 'unpaid', 'unpaidoverdue', 'unbooked', 'pendingpayment'])
15
+ .optional()
16
+ .describe('Filter: fullypaid, cancelled, unpaid, unpaidoverdue, unbooked, pendingpayment'),
17
+ supplierNumber: z.string().optional().describe('Filtrera på leverantörsnummer'),
18
+ fromDate: z.string().optional().describe('Från datum (YYYY-MM-DD)'),
19
+ toDate: z.string().optional().describe('Till datum (YYYY-MM-DD)'),
20
+ page: z.number().optional().describe('Sidnummer (default 1)'),
21
+ limit: z.number().optional().describe('Antal per sida (default 100, max 500)'),
22
+ all: z.boolean().optional().describe('Hämta alla sidor (ignorerar page/limit)'),
23
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
24
+ }, async ({ filter, supplierNumber, fromDate, toDate, page, limit, all, includeRaw }) => {
25
+ const data = await listSupplierInvoices({
26
+ filter,
27
+ supplierNumber,
28
+ fromDate,
29
+ toDate,
30
+ page,
31
+ limit,
32
+ all,
33
+ });
34
+ return listResponse(data.SupplierInvoices ?? [], supplierInvoiceListColumns, data, data.MetaInformation, includeRaw);
35
+ });
36
+ server.tool('fortnox_get_supplier_invoice', 'Hämta en enskild leverantörsfaktura från Fortnox. Returnerar: GivenNumber, SupplierNumber, SupplierName, InvoiceNumber, InvoiceDate, DueDate, Total, Balance, Currency, Booked, OCR, Comments.', {
37
+ givenNumber: z.string().describe('Leverantörsfakturanummer (GivenNumber)'),
38
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
39
+ }, async ({ givenNumber, includeRaw }) => {
40
+ const data = await getSupplierInvoice(givenNumber);
41
+ return detailResponse(data, supplierInvoiceDetailColumns, data, includeRaw);
42
+ });
43
+ server.tool('fortnox_create_supplier_invoice', 'Skapa en leverantörsfaktura i Fortnox', {
44
+ SupplierNumber: z.string().describe('Leverantörsnummer'),
45
+ InvoiceNumber: z.string().optional().describe('Leverantörens fakturanummer'),
46
+ InvoiceDate: z.string().optional().describe('Fakturadatum (YYYY-MM-DD)'),
47
+ DueDate: z.string().optional().describe('Förfallodatum (YYYY-MM-DD)'),
48
+ Total: z.number().optional().describe('Totalbelopp inkl. moms'),
49
+ OCR: z.string().optional().describe('OCR-nummer'),
50
+ Currency: z.string().optional().describe('Valutakod (default SEK)'),
51
+ Comments: z.string().optional().describe('Kommentarer'),
52
+ SupplierInvoiceRows: z
53
+ .array(SupplierInvoiceRowSchema)
54
+ .optional()
55
+ .describe('Fakturarader med konto, debet och kredit'),
56
+ confirm: z.boolean().optional().describe('Bekräfta att leverantörsfakturan ska skapas'),
57
+ dryRun: z
58
+ .boolean()
59
+ .optional()
60
+ .describe('Visa vad som skulle skickas utan att skapa leverantörsfakturan'),
61
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
62
+ }, async ({ confirm, dryRun, includeRaw, ...params }) => {
63
+ if (dryRun) {
64
+ return dryRunResponse(`create supplier invoice for supplier ${params.SupplierNumber}`, {
65
+ SupplierInvoice: params,
66
+ });
67
+ }
68
+ if (!confirm)
69
+ requireConfirmation(`create supplier invoice for supplier ${params.SupplierNumber}`);
70
+ const data = await createSupplierInvoice(params);
71
+ return detailResponse(data, supplierInvoiceDetailColumns, data, includeRaw);
72
+ });
73
+ server.tool('fortnox_bookkeep_supplier_invoice', 'Bokför en leverantörsfaktura i Fortnox', {
74
+ givenNumber: z.string().describe('Leverantörsfakturanummer att bokföra'),
75
+ confirm: z.boolean().optional().describe('Bekräfta att leverantörsfakturan ska bokföras'),
76
+ dryRun: z.boolean().optional().describe('Visa vad som skulle hända utan att bokföra'),
77
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
78
+ }, async ({ givenNumber, confirm, dryRun, includeRaw }) => {
79
+ if (dryRun) {
80
+ return dryRunResponse(`bookkeep supplier invoice ${givenNumber}`);
81
+ }
82
+ if (!confirm)
83
+ requireConfirmation(`bookkeep supplier invoice ${givenNumber}`);
84
+ const data = await bookkeepSupplierInvoice(givenNumber);
85
+ return detailResponse(data, supplierInvoiceConfirmColumns, data, includeRaw);
86
+ });
87
+ }
88
+ //# sourceMappingURL=supplier-invoices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supplier-invoices.js","sourceRoot":"","sources":["../../src/tools/supplier-invoices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerSupplierTools(server: McpServer): void;
3
+ //# sourceMappingURL=suppliers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suppliers.d.ts","sourceRoot":"","sources":["../../src/tools/suppliers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoG7D"}
@@ -0,0 +1,77 @@
1
+ import { z } from 'zod';
2
+ import { listSuppliers, getSupplier, createSupplier, updateSupplier, } from '../operations/suppliers.js';
3
+ import { supplierListColumns, supplierDetailColumns } from '../views.js';
4
+ import { detailResponse, dryRunResponse, listResponse, requireConfirmation, } from '../tool-output.js';
5
+ export function registerSupplierTools(server) {
6
+ server.tool('fortnox_list_suppliers', 'Lista/sök leverantörer i Fortnox. Returnerar: SupplierNumber, Name, OrganisationNumber, City, Email.', {
7
+ search: z.string().optional().describe('Sökterm (namn)'),
8
+ page: z.number().optional().describe('Sidnummer (default 1)'),
9
+ limit: z.number().optional().describe('Antal per sida (default 100, max 500)'),
10
+ all: z.boolean().optional().describe('Hämta alla sidor (ignorerar page/limit)'),
11
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
12
+ }, async ({ search, page, limit, all, includeRaw }) => {
13
+ const data = await listSuppliers({ search, page, limit, all });
14
+ return listResponse(data.Suppliers ?? [], supplierListColumns, data, data.MetaInformation, includeRaw);
15
+ });
16
+ server.tool('fortnox_get_supplier', 'Hämta en enskild leverantör från Fortnox. Returnerar: SupplierNumber, Name, OrganisationNumber, Email, Phone1, Address1, ZipCode, City, BG, PG, BankAccountNumber.', {
17
+ supplierNumber: z.string().describe('Leverantörsnummer'),
18
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
19
+ }, async ({ supplierNumber, includeRaw }) => {
20
+ const data = await getSupplier(supplierNumber);
21
+ return detailResponse(data, supplierDetailColumns, data, includeRaw);
22
+ });
23
+ server.tool('fortnox_create_supplier', 'Skapa en ny leverantör i Fortnox', {
24
+ Name: z.string().describe('Leverantörsnamn'),
25
+ OrganisationNumber: z.string().optional().describe('Organisationsnummer'),
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'),
34
+ confirm: z.boolean().optional().describe('Bekräfta att leverantören ska skapas'),
35
+ dryRun: z
36
+ .boolean()
37
+ .optional()
38
+ .describe('Visa vad som skulle skickas utan att skapa leverantören'),
39
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
40
+ }, async ({ confirm, dryRun, includeRaw, ...params }) => {
41
+ if (dryRun) {
42
+ return dryRunResponse(`create supplier "${params.Name}"`, { Supplier: params });
43
+ }
44
+ if (!confirm)
45
+ requireConfirmation(`create supplier "${params.Name}"`);
46
+ const data = await createSupplier(params);
47
+ return detailResponse(data, supplierDetailColumns, data, includeRaw);
48
+ });
49
+ server.tool('fortnox_update_supplier', 'Uppdatera en befintlig leverantör i Fortnox', {
50
+ supplierNumber: z.string().describe('Leverantörsnummer att uppdatera'),
51
+ Name: z.string().optional().describe('Leverantörsnamn'),
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'),
61
+ confirm: z.boolean().optional().describe('Bekräfta att leverantören ska uppdateras'),
62
+ dryRun: z
63
+ .boolean()
64
+ .optional()
65
+ .describe('Visa vad som skulle skickas utan att uppdatera leverantören'),
66
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
67
+ }, async ({ supplierNumber, confirm, dryRun, includeRaw, ...fields }) => {
68
+ if (dryRun) {
69
+ return dryRunResponse(`update supplier ${supplierNumber}`, { Supplier: fields });
70
+ }
71
+ if (!confirm)
72
+ requireConfirmation(`update supplier ${supplierNumber}`);
73
+ const data = await updateSupplier(supplierNumber, fields);
74
+ return detailResponse(data, supplierDetailColumns, data, includeRaw);
75
+ });
76
+ }
77
+ //# sourceMappingURL=suppliers.js.map
@@ -0,0 +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,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,sGAAsG,EACtG;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QAC9E,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAC/E,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/D,OAAO,YAAY,CACjB,IAAI,CAAC,SAAS,IAAI,EAAE,EACpB,mBAAmB,EACnB,IAAI,EACJ,IAAI,CAAC,eAAe,EACpB,UAAU,CACX,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,oKAAoK,EACpK;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACxD,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,CAAC;QAC/C,OAAO,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,kCAAkC,EAClC;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC5C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACzE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACvD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QACvD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3C,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACpE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAChF,MAAM,EAAE,CAAC;aACN,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,yDAAyD,CAAC;QACtE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE;QACnD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,cAAc,CAAC,oBAAoB,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,mBAAmB,CAAC,oBAAoB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAEtE,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,6CAA6C,EAC7C;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACtE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACvD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACzE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACvD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QACvD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3C,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACpE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QACpF,MAAM,EAAE,CAAC;aACN,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,6DAA6D,CAAC;QAC1E,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE;QACnE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,cAAc,CAAC,mBAAmB,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,mBAAmB,CAAC,mBAAmB,cAAc,EAAE,CAAC,CAAC;QAEvE,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerTaxTools(server: McpServer): void;
3
+ //# sourceMappingURL=tax.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tax.d.ts","sourceRoot":"","sources":["../../src/tools/tax.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkBxD"}
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ import { generateTaxReport } from '../operations/tax.js';
3
+ import { taxReportResponse } from '../tool-output.js';
4
+ export function registerTaxTools(server) {
5
+ server.tool('fortnox_tax_report', 'Informativ momssammanstallning for en period. Kontrollera alltid mot Fortnox momsrapport innan deklaration.', {
6
+ fromDate: z.string().describe('Från datum (YYYY-MM-DD), t.ex. första dagen i kvartalet'),
7
+ toDate: z.string().describe('Till datum (YYYY-MM-DD), t.ex. sista dagen i kvartalet'),
8
+ financialYear: z.number().optional().describe('Räkenskapsår (default: nuvarande)'),
9
+ includeRaw: z
10
+ .boolean()
11
+ .optional()
12
+ .describe('Inkludera rå JSON från Fortnox (kan exponera mer bokförings- och persondata)'),
13
+ }, async ({ includeRaw, ...params }) => {
14
+ const report = await generateTaxReport(params);
15
+ return taxReportResponse(report, includeRaw);
16
+ });
17
+ }
18
+ //# sourceMappingURL=tax.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tax.js","sourceRoot":"","sources":["../../src/tools/tax.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,6GAA6G,EAC7G;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;QACxF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QACrF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAClF,UAAU,EAAE,CAAC;aACV,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,8EAA8E,CAAC;KAC5F,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,iBAAiB,CAAC,MAA4C,EAAE,UAAU,CAAC,CAAC;IACrF,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { Column } from './formatter.js';
2
+ export declare const invoiceListColumns: Column[];
3
+ export declare const invoiceDetailColumns: Column[];
4
+ export declare const invoiceConfirmColumns: Column[];
5
+ export declare const customerListColumns: Column[];
6
+ export declare const customerDetailColumns: Column[];
7
+ export declare const voucherListColumns: Column[];
8
+ export declare const voucherDetailColumns: Column[];
9
+ export declare const voucherRowColumns: Column[];
10
+ export declare const articleListColumns: Column[];
11
+ export declare const articleDetailColumns: Column[];
12
+ export declare const supplierListColumns: Column[];
13
+ export declare const supplierDetailColumns: Column[];
14
+ export declare const supplierInvoiceListColumns: Column[];
15
+ export declare const supplierInvoiceDetailColumns: Column[];
16
+ export declare const supplierInvoiceConfirmColumns: Column[];
17
+ export declare const accountListColumns: Column[];
18
+ export declare const companyDetailColumns: Column[];
19
+ //# sourceMappingURL=views.d.ts.map
@@ -0,0 +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;AAGF,eAAO,MAAM,iBAAiB,EAAE,MAAM,EAKrC,CAAC;AAKF,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAMtC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,EASxC,CAAC;AAKF,eAAO,MAAM,mBAAmB,EAAE,MAAM,EAMvC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,EAYzC,CAAC;AAKF,eAAO,MAAM,0BAA0B,EAAE,MAAM,EAO9C,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,MAAM,EAahD,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,MAAM,EAKjD,CAAC;AAKF,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAItC,CAAC;AAIF,eAAO,MAAM,oBAAoB,EAAE,MAAM,EASxC,CAAC"}
package/dist/views.js ADDED
@@ -0,0 +1,165 @@
1
+ const currency = (v) => (typeof v === 'number' ? v.toFixed(2) : String(v ?? ''));
2
+ // --- Invoice views (target ≤80 cols) ---
3
+ // 7 + 2 + 20 + 2 + 10 + 2 + 10 + 2 + 10 + 2 + 10 = 77
4
+ export const invoiceListColumns = [
5
+ { key: 'DocumentNumber', header: 'Doc #', width: 7, align: 'right' },
6
+ { key: 'CustomerName', header: 'Customer', width: 20 },
7
+ { key: 'InvoiceDate', header: 'Date', width: 10 },
8
+ { key: 'DueDate', header: 'Due', width: 10 },
9
+ { key: 'Total', header: 'Total', width: 10, align: 'right', format: currency },
10
+ { key: 'Balance', header: 'Balance', width: 10, align: 'right', format: currency },
11
+ ];
12
+ export const invoiceDetailColumns = [
13
+ { key: 'DocumentNumber', header: 'Document #', width: 20 },
14
+ { key: 'CustomerNumber', header: 'Customer #', width: 20 },
15
+ { key: 'CustomerName', header: 'Customer', width: 40 },
16
+ { key: 'InvoiceDate', header: 'Invoice Date', width: 10 },
17
+ { key: 'DueDate', header: 'Due Date', width: 10 },
18
+ { key: 'Total', header: 'Total', width: 20, format: currency },
19
+ { key: 'Balance', header: 'Balance', width: 20, format: currency },
20
+ { key: 'Currency', header: 'Currency', width: 5 },
21
+ { key: 'Booked', header: 'Booked', width: 5 },
22
+ { key: 'Sent', header: 'Sent', width: 5 },
23
+ { key: 'OurReference', header: 'Our Reference', width: 30 },
24
+ { key: 'CreditInvoiceReference', header: 'Credit Ref', width: 20 },
25
+ ];
26
+ export const invoiceConfirmColumns = [
27
+ { key: 'DocumentNumber', header: 'Document #', width: 20 },
28
+ { key: 'CustomerNumber', header: 'Customer #', width: 20 },
29
+ { key: 'Total', header: 'Total', width: 20, format: currency },
30
+ { key: 'Booked', header: 'Booked', width: 5 },
31
+ { key: 'Sent', header: 'Sent', width: 5 },
32
+ { key: 'CreditInvoiceReference', header: 'Credit Ref', width: 20 },
33
+ ];
34
+ // --- Customer views (target ≤80 cols) ---
35
+ // 7 + 2 + 25 + 2 + 12 + 2 + 12 + 2 + 14 = 78
36
+ export const customerListColumns = [
37
+ { key: 'CustomerNumber', header: '#', width: 7, align: 'right' },
38
+ { key: 'Name', header: 'Name', width: 25 },
39
+ { key: 'OrganisationNumber', header: 'Org Nr', width: 12 },
40
+ { key: 'City', header: 'City', width: 12 },
41
+ { key: 'Email', header: 'Email', width: 14 },
42
+ ];
43
+ export const customerDetailColumns = [
44
+ { key: 'CustomerNumber', header: 'Customer #', width: 20 },
45
+ { key: 'Name', header: 'Name', width: 40 },
46
+ { key: 'OrganisationNumber', header: 'Org Nr', width: 20 },
47
+ { key: 'Email', header: 'Email', width: 40 },
48
+ { key: 'Phone', header: 'Phone', width: 20 },
49
+ { key: 'Address1', header: 'Address', width: 40 },
50
+ { key: 'ZipCode', header: 'Zip Code', width: 10 },
51
+ { key: 'City', header: 'City', width: 20 },
52
+ { key: 'Country', header: 'Country', width: 5 },
53
+ { key: 'VATNumber', header: 'VAT Number', width: 20 },
54
+ ];
55
+ // --- Voucher views (target ≤80 cols) ---
56
+ // 6 + 2 + 7 + 2 + 10 + 2 + 45 = 74
57
+ export const voucherListColumns = [
58
+ { key: 'VoucherSeries', header: 'Series', width: 6 },
59
+ { key: 'VoucherNumber', header: 'Number', width: 7, align: 'right' },
60
+ { key: 'TransactionDate', header: 'Date', width: 10 },
61
+ { key: 'Description', header: 'Description', width: 45 },
62
+ ];
63
+ export const voucherDetailColumns = [
64
+ { key: 'VoucherSeries', header: 'Series', width: 10 },
65
+ { key: 'VoucherNumber', header: 'Number', width: 10 },
66
+ { key: 'TransactionDate', header: 'Date', width: 10 },
67
+ { key: 'Description', header: 'Description', width: 50 },
68
+ ];
69
+ // 8 + 2 + 12 + 2 + 12 + 2 + 30 = 68
70
+ export const voucherRowColumns = [
71
+ { key: 'Account', header: 'Account', width: 8, align: 'right' },
72
+ { key: 'Debit', header: 'Debit', width: 12, align: 'right', format: currency },
73
+ { key: 'Credit', header: 'Credit', width: 12, align: 'right', format: currency },
74
+ { key: 'Description', header: 'Description', width: 30 },
75
+ ];
76
+ // --- Article views (target ≤80 cols) ---
77
+ // 10 + 2 + 30 + 2 + 10 + 2 + 6 + 2 + 10 = 74
78
+ export const articleListColumns = [
79
+ { key: 'ArticleNumber', header: 'Art #', width: 10, align: 'right' },
80
+ { key: 'Description', header: 'Description', width: 30 },
81
+ { key: 'SalesPrice', header: 'Price', width: 10, align: 'right', format: currency },
82
+ { key: 'Unit', header: 'Unit', width: 6 },
83
+ { key: 'Active', header: 'Active', width: 10 },
84
+ ];
85
+ export const articleDetailColumns = [
86
+ { key: 'ArticleNumber', header: 'Article #', width: 20 },
87
+ { key: 'Description', header: 'Description', width: 40 },
88
+ { key: 'SalesPrice', header: 'Sales Price', width: 20, format: currency },
89
+ { key: 'PurchasePrice', header: 'Purchase Price', width: 20, format: currency },
90
+ { key: 'Unit', header: 'Unit', width: 10 },
91
+ { key: 'SalesAccount', header: 'Sales Account', width: 10 },
92
+ { key: 'VAT', header: 'VAT %', width: 10 },
93
+ { key: 'Active', header: 'Active', width: 5 },
94
+ ];
95
+ // --- Supplier views (target ≤80 cols) ---
96
+ // 7 + 2 + 25 + 2 + 12 + 2 + 12 + 2 + 14 = 78
97
+ export const supplierListColumns = [
98
+ { key: 'SupplierNumber', header: '#', width: 7, align: 'right' },
99
+ { key: 'Name', header: 'Name', width: 25 },
100
+ { key: 'OrganisationNumber', header: 'Org Nr', width: 12 },
101
+ { key: 'City', header: 'City', width: 12 },
102
+ { key: 'Email', header: 'Email', width: 14 },
103
+ ];
104
+ export const supplierDetailColumns = [
105
+ { key: 'SupplierNumber', header: 'Supplier #', width: 20 },
106
+ { key: 'Name', header: 'Name', width: 40 },
107
+ { key: 'OrganisationNumber', header: 'Org Nr', width: 20 },
108
+ { key: 'Email', header: 'Email', width: 40 },
109
+ { key: 'Phone1', header: 'Phone', width: 20 },
110
+ { key: 'Address1', header: 'Address', width: 40 },
111
+ { key: 'ZipCode', header: 'Zip Code', width: 10 },
112
+ { key: 'City', header: 'City', width: 20 },
113
+ { key: 'BG', header: 'Bankgiro', width: 15 },
114
+ { key: 'PG', header: 'Plusgiro', width: 15 },
115
+ { key: 'BankAccountNumber', header: 'Bank Account', width: 20 },
116
+ ];
117
+ // --- Supplier invoice views (target ≤80 cols) ---
118
+ // 7 + 2 + 20 + 2 + 10 + 2 + 10 + 2 + 10 + 2 + 10 = 77
119
+ export const supplierInvoiceListColumns = [
120
+ { key: 'GivenNumber', header: 'Inv #', width: 7, align: 'right' },
121
+ { key: 'SupplierName', header: 'Supplier', width: 20 },
122
+ { key: 'InvoiceDate', header: 'Date', width: 10 },
123
+ { key: 'DueDate', header: 'Due', width: 10 },
124
+ { key: 'Total', header: 'Total', width: 10, align: 'right', format: currency },
125
+ { key: 'Balance', header: 'Balance', width: 10, align: 'right', format: currency },
126
+ ];
127
+ export const supplierInvoiceDetailColumns = [
128
+ { key: 'GivenNumber', header: 'Given #', width: 20 },
129
+ { key: 'SupplierNumber', header: 'Supplier #', width: 20 },
130
+ { key: 'SupplierName', header: 'Supplier', width: 40 },
131
+ { key: 'InvoiceNumber', header: 'Invoice Nr', width: 20 },
132
+ { key: 'InvoiceDate', header: 'Invoice Date', width: 10 },
133
+ { key: 'DueDate', header: 'Due Date', width: 10 },
134
+ { key: 'Total', header: 'Total', width: 20, format: currency },
135
+ { key: 'Balance', header: 'Balance', width: 20, format: currency },
136
+ { key: 'Currency', header: 'Currency', width: 5 },
137
+ { key: 'Booked', header: 'Booked', width: 5 },
138
+ { key: 'OCR', header: 'OCR', width: 20 },
139
+ { key: 'Comments', header: 'Comments', width: 40 },
140
+ ];
141
+ export const supplierInvoiceConfirmColumns = [
142
+ { key: 'GivenNumber', header: 'Given #', width: 20 },
143
+ { key: 'SupplierNumber', header: 'Supplier #', width: 20 },
144
+ { key: 'Total', header: 'Total', width: 20, format: currency },
145
+ { key: 'Booked', header: 'Booked', width: 5 },
146
+ ];
147
+ // --- Account views (target ≤80 cols) ---
148
+ // 8 + 2 + 50 + 2 + 6 = 68
149
+ export const accountListColumns = [
150
+ { key: 'Number', header: 'Account', width: 8, align: 'right' },
151
+ { key: 'Description', header: 'Description', width: 50 },
152
+ { key: 'SRU', header: 'SRU', width: 6, align: 'right' },
153
+ ];
154
+ // --- Company views ---
155
+ export const companyDetailColumns = [
156
+ { key: 'CompanyName', header: 'Company', width: 40 },
157
+ { key: 'OrganisationNumber', header: 'Org Nr', width: 20 },
158
+ { key: 'Address', header: 'Address', width: 40 },
159
+ { key: 'ZipCode', header: 'Zip Code', width: 10 },
160
+ { key: 'City', header: 'City', width: 20 },
161
+ { key: 'Country', header: 'Country', width: 5 },
162
+ { key: 'Email', header: 'Email', width: 40 },
163
+ { key: 'DatabaseNumber', header: 'Database #', width: 10 },
164
+ ];
165
+ //# sourceMappingURL=views.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"views.js","sourceRoot":"","sources":["../src/views.ts"],"names":[],"mappings":"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"}