noxctl 0.8.0 → 0.10.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 (207) hide show
  1. package/README.md +70 -3
  2. package/dist/api-coverage.d.ts +48 -0
  3. package/dist/api-coverage.d.ts.map +1 -0
  4. package/dist/api-coverage.js +175 -0
  5. package/dist/api-coverage.js.map +1 -0
  6. package/dist/auth.d.ts +1 -0
  7. package/dist/auth.d.ts.map +1 -1
  8. package/dist/auth.js +7 -0
  9. package/dist/auth.js.map +1 -1
  10. package/dist/cli-validators.d.ts +3 -0
  11. package/dist/cli-validators.d.ts.map +1 -0
  12. package/dist/cli-validators.js +10 -0
  13. package/dist/cli-validators.js.map +1 -0
  14. package/dist/cli.d.ts.map +1 -1
  15. package/dist/cli.js +1114 -18
  16. package/dist/cli.js.map +1 -1
  17. package/dist/fortnox-client.d.ts +6 -0
  18. package/dist/fortnox-client.d.ts.map +1 -1
  19. package/dist/fortnox-client.js +36 -1
  20. package/dist/fortnox-client.js.map +1 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +8 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/operations/absencetransactions.d.ts +3 -1
  25. package/dist/operations/absencetransactions.d.ts.map +1 -1
  26. package/dist/operations/absencetransactions.js +11 -1
  27. package/dist/operations/absencetransactions.js.map +1 -1
  28. package/dist/operations/accounts.d.ts +5 -1
  29. package/dist/operations/accounts.d.ts.map +1 -1
  30. package/dist/operations/accounts.js +24 -2
  31. package/dist/operations/accounts.js.map +1 -1
  32. package/dist/operations/accruals.d.ts +65 -0
  33. package/dist/operations/accruals.d.ts.map +1 -0
  34. package/dist/operations/accruals.js +81 -0
  35. package/dist/operations/accruals.js.map +1 -0
  36. package/dist/operations/articles.d.ts +2 -1
  37. package/dist/operations/articles.d.ts.map +1 -1
  38. package/dist/operations/articles.js +7 -2
  39. package/dist/operations/articles.js.map +1 -1
  40. package/dist/operations/attendancetransactions.d.ts +3 -1
  41. package/dist/operations/attendancetransactions.d.ts.map +1 -1
  42. package/dist/operations/attendancetransactions.js +11 -1
  43. package/dist/operations/attendancetransactions.js.map +1 -1
  44. package/dist/operations/customers.d.ts +2 -1
  45. package/dist/operations/customers.d.ts.map +1 -1
  46. package/dist/operations/customers.js +7 -2
  47. package/dist/operations/customers.js.map +1 -1
  48. package/dist/operations/files.d.ts +85 -0
  49. package/dist/operations/files.d.ts.map +1 -0
  50. package/dist/operations/files.js +88 -0
  51. package/dist/operations/files.js.map +1 -0
  52. package/dist/operations/financial-years.d.ts +2 -1
  53. package/dist/operations/financial-years.d.ts.map +1 -1
  54. package/dist/operations/financial-years.js +9 -2
  55. package/dist/operations/financial-years.js.map +1 -1
  56. package/dist/operations/general-ledger.d.ts +24 -0
  57. package/dist/operations/general-ledger.d.ts.map +1 -0
  58. package/dist/operations/general-ledger.js +66 -0
  59. package/dist/operations/general-ledger.js.map +1 -0
  60. package/dist/operations/index.d.ts +386 -0
  61. package/dist/operations/index.d.ts.map +1 -1
  62. package/dist/operations/index.js +8 -0
  63. package/dist/operations/index.js.map +1 -1
  64. package/dist/operations/invoice-payments.d.ts +2 -1
  65. package/dist/operations/invoice-payments.d.ts.map +1 -1
  66. package/dist/operations/invoice-payments.js +6 -1
  67. package/dist/operations/invoice-payments.js.map +1 -1
  68. package/dist/operations/invoices.d.ts +32 -1
  69. package/dist/operations/invoices.d.ts.map +1 -1
  70. package/dist/operations/invoices.js +140 -1
  71. package/dist/operations/invoices.js.map +1 -1
  72. package/dist/operations/offers.d.ts +5 -1
  73. package/dist/operations/offers.d.ts.map +1 -1
  74. package/dist/operations/offers.js +19 -1
  75. package/dist/operations/offers.js.map +1 -1
  76. package/dist/operations/orders.d.ts +5 -1
  77. package/dist/operations/orders.d.ts.map +1 -1
  78. package/dist/operations/orders.js +26 -2
  79. package/dist/operations/orders.js.map +1 -1
  80. package/dist/operations/pricelists.d.ts +4 -2
  81. package/dist/operations/pricelists.d.ts.map +1 -1
  82. package/dist/operations/pricelists.js +23 -9
  83. package/dist/operations/pricelists.js.map +1 -1
  84. package/dist/operations/projects.d.ts +2 -1
  85. package/dist/operations/projects.d.ts.map +1 -1
  86. package/dist/operations/projects.js +5 -2
  87. package/dist/operations/projects.js.map +1 -1
  88. package/dist/operations/reference-data.d.ts +243 -0
  89. package/dist/operations/reference-data.d.ts.map +1 -0
  90. package/dist/operations/reference-data.js +113 -0
  91. package/dist/operations/reference-data.js.map +1 -0
  92. package/dist/operations/salarytransactions.d.ts +2 -1
  93. package/dist/operations/salarytransactions.d.ts.map +1 -1
  94. package/dist/operations/salarytransactions.js +6 -1
  95. package/dist/operations/salarytransactions.js.map +1 -1
  96. package/dist/operations/supplier-invoice-payments.d.ts +3 -1
  97. package/dist/operations/supplier-invoice-payments.d.ts.map +1 -1
  98. package/dist/operations/supplier-invoice-payments.js +11 -1
  99. package/dist/operations/supplier-invoice-payments.js.map +1 -1
  100. package/dist/operations/supplier-invoices.d.ts +21 -1
  101. package/dist/operations/supplier-invoices.d.ts.map +1 -1
  102. package/dist/operations/supplier-invoices.js +68 -1
  103. package/dist/operations/supplier-invoices.js.map +1 -1
  104. package/dist/operations/taxreductions.d.ts +3 -1
  105. package/dist/operations/taxreductions.d.ts.map +1 -1
  106. package/dist/operations/taxreductions.js +18 -2
  107. package/dist/operations/taxreductions.js.map +1 -1
  108. package/dist/operations/vouchers.d.ts +18 -1
  109. package/dist/operations/vouchers.d.ts.map +1 -1
  110. package/dist/operations/vouchers.js +49 -1
  111. package/dist/operations/vouchers.js.map +1 -1
  112. package/dist/safe-file-output.d.ts +4 -0
  113. package/dist/safe-file-output.d.ts.map +1 -0
  114. package/dist/safe-file-output.js +48 -0
  115. package/dist/safe-file-output.js.map +1 -0
  116. package/dist/schema-audit-mappings.d.ts +6 -5
  117. package/dist/schema-audit-mappings.d.ts.map +1 -1
  118. package/dist/schema-audit-mappings.js +159 -10
  119. package/dist/schema-audit-mappings.js.map +1 -1
  120. package/dist/schema-audit.d.ts +30 -1
  121. package/dist/schema-audit.d.ts.map +1 -1
  122. package/dist/schema-audit.js +288 -14
  123. package/dist/schema-audit.js.map +1 -1
  124. package/dist/scope-probes.d.ts.map +1 -1
  125. package/dist/scope-probes.js +1 -0
  126. package/dist/scope-probes.js.map +1 -1
  127. package/dist/sie.d.ts +51 -0
  128. package/dist/sie.d.ts.map +1 -0
  129. package/dist/sie.js +355 -0
  130. package/dist/sie.js.map +1 -0
  131. package/dist/tools/absencetransactions.d.ts.map +1 -1
  132. package/dist/tools/absencetransactions.js +30 -3
  133. package/dist/tools/absencetransactions.js.map +1 -1
  134. package/dist/tools/accruals.d.ts +18 -0
  135. package/dist/tools/accruals.d.ts.map +1 -0
  136. package/dist/tools/accruals.js +169 -0
  137. package/dist/tools/accruals.js.map +1 -0
  138. package/dist/tools/articles.d.ts.map +1 -1
  139. package/dist/tools/articles.js +17 -2
  140. package/dist/tools/articles.js.map +1 -1
  141. package/dist/tools/attendancetransactions.d.ts.map +1 -1
  142. package/dist/tools/attendancetransactions.js +30 -3
  143. package/dist/tools/attendancetransactions.js.map +1 -1
  144. package/dist/tools/bookkeeping.d.ts.map +1 -1
  145. package/dist/tools/bookkeeping.js +121 -2
  146. package/dist/tools/bookkeeping.js.map +1 -1
  147. package/dist/tools/contracts.js +1 -1
  148. package/dist/tools/contracts.js.map +1 -1
  149. package/dist/tools/customers.d.ts.map +1 -1
  150. package/dist/tools/customers.js +111 -20
  151. package/dist/tools/customers.js.map +1 -1
  152. package/dist/tools/files.d.ts +4 -0
  153. package/dist/tools/files.d.ts.map +1 -0
  154. package/dist/tools/files.js +120 -0
  155. package/dist/tools/files.js.map +1 -0
  156. package/dist/tools/financial-years.d.ts.map +1 -1
  157. package/dist/tools/financial-years.js +18 -2
  158. package/dist/tools/financial-years.js.map +1 -1
  159. package/dist/tools/general-ledger.d.ts +4 -0
  160. package/dist/tools/general-ledger.d.ts.map +1 -0
  161. package/dist/tools/general-ledger.js +61 -0
  162. package/dist/tools/general-ledger.js.map +1 -0
  163. package/dist/tools/invoice-payments.d.ts.map +1 -1
  164. package/dist/tools/invoice-payments.js +34 -1
  165. package/dist/tools/invoice-payments.js.map +1 -1
  166. package/dist/tools/invoices.d.ts.map +1 -1
  167. package/dist/tools/invoices.js +187 -57
  168. package/dist/tools/invoices.js.map +1 -1
  169. package/dist/tools/offers.d.ts.map +1 -1
  170. package/dist/tools/offers.js +68 -1
  171. package/dist/tools/offers.js.map +1 -1
  172. package/dist/tools/orders.d.ts.map +1 -1
  173. package/dist/tools/orders.js +68 -1
  174. package/dist/tools/orders.js.map +1 -1
  175. package/dist/tools/pricelists.d.ts.map +1 -1
  176. package/dist/tools/pricelists.js +35 -3
  177. package/dist/tools/pricelists.js.map +1 -1
  178. package/dist/tools/projects.d.ts.map +1 -1
  179. package/dist/tools/projects.js +14 -2
  180. package/dist/tools/projects.js.map +1 -1
  181. package/dist/tools/recurrings.js +1 -1
  182. package/dist/tools/recurrings.js.map +1 -1
  183. package/dist/tools/reference-data.d.ts +17 -0
  184. package/dist/tools/reference-data.d.ts.map +1 -0
  185. package/dist/tools/reference-data.js +124 -0
  186. package/dist/tools/reference-data.js.map +1 -0
  187. package/dist/tools/salarytransactions.d.ts.map +1 -1
  188. package/dist/tools/salarytransactions.js +27 -1
  189. package/dist/tools/salarytransactions.js.map +1 -1
  190. package/dist/tools/supplier-invoice-payments.d.ts.map +1 -1
  191. package/dist/tools/supplier-invoice-payments.js +34 -1
  192. package/dist/tools/supplier-invoice-payments.js.map +1 -1
  193. package/dist/tools/supplier-invoices.d.ts.map +1 -1
  194. package/dist/tools/supplier-invoices.js +147 -5
  195. package/dist/tools/supplier-invoices.js.map +1 -1
  196. package/dist/tools/taxreductions.d.ts.map +1 -1
  197. package/dist/tools/taxreductions.js +33 -2
  198. package/dist/tools/taxreductions.js.map +1 -1
  199. package/dist/version.d.ts +1 -1
  200. package/dist/version.d.ts.map +1 -1
  201. package/dist/version.js +1 -1
  202. package/dist/version.js.map +1 -1
  203. package/dist/views.d.ts +5 -0
  204. package/dist/views.d.ts.map +1 -1
  205. package/dist/views.js +40 -1
  206. package/dist/views.js.map +1 -1
  207. package/package.json +8 -5
@@ -1,12 +1,106 @@
1
1
  import { z } from 'zod';
2
2
  import { defaultFortnoxOperations } from '../operations/index.js';
3
3
  import { customerListColumns, customerDetailColumns } from '../views.js';
4
- import { detailResponse, dryRunResponse, listResponse, requireConfirmation, } from '../tool-output.js';
4
+ import { detailResponse, dryRunResponse, listResponse, requireConfirmation, textResponse, } from '../tool-output.js';
5
5
  const CustomerNumberSchema = z
6
6
  .string()
7
7
  .regex(/^[A-Za-z0-9][A-Za-z0-9_-]{0,49}$/, 'Customer number must be alphanumeric');
8
+ const CustomerDeliveryTypeSchema = z.enum(['PRINT', 'EMAIL', 'PRINTSERVICE']);
9
+ // The full writable Customer field set (Fortnox `CustomerSinglePayloadItem`).
10
+ // The MCP SDK silently strips any argument the schema does not declare, so a
11
+ // field missing here never reaches Fortnox and never raises an error — it just
12
+ // vanishes (#96, same class of bug as the Supplier field gap). The operations
13
+ // layer forwards whatever it is given.
14
+ //
15
+ // Country / DeliveryCountry / VisitingCountry are deliberately NOT declared
16
+ // here: Fortnox rejects them on write ("Fältet Country är endast läsbart") —
17
+ // they're server-derived from the matching *CountryCode field, which is the
18
+ // real writable source and is exposed below. operations/customers.ts strips
19
+ // the *Country fields defensively too, so a `get` response fed straight back
20
+ // into create/update still works, but the tool schema should not offer a
21
+ // field that would then be silently dropped a second time.
22
+ const customerWritableFields = {
23
+ CustomerNumber: CustomerNumberSchema.optional().describe('Kundnummer'),
24
+ Name: z.string().optional().describe('Kundnamn'),
25
+ Type: z.enum(['PRIVATE', 'COMPANY']).optional().describe('Kundtyp: privatperson eller företag'),
26
+ DefaultDeliveryTypes: z
27
+ .strictObject({
28
+ Invoice: CustomerDeliveryTypeSchema.optional().describe('Leveranssätt för fakturor'),
29
+ Offer: CustomerDeliveryTypeSchema.optional().describe('Leveranssätt för offerter'),
30
+ Order: CustomerDeliveryTypeSchema.optional().describe('Leveranssätt för ordrar'),
31
+ })
32
+ .optional()
33
+ .describe('Förvalda leveranssätt för fakturor, offerter och ordrar'),
34
+ DefaultTemplates: z
35
+ .strictObject({
36
+ CashInvoice: z.string().optional().describe('Mall för kontantfakturor'),
37
+ Invoice: z.string().optional().describe('Mall för fakturor'),
38
+ Offer: z.string().optional().describe('Mall för offerter'),
39
+ Order: z.string().optional().describe('Mall för ordrar'),
40
+ })
41
+ .optional()
42
+ .describe('Förvalda dokumentmallar'),
43
+ OrganisationNumber: z.string().optional().describe('Organisations- eller personnummer'),
44
+ Email: z.string().optional().describe('E-postadress'),
45
+ Phone1: z.string().optional().describe('Telefonnummer'),
46
+ Phone2: z.string().optional().describe('Alternativt telefonnummer'),
47
+ Fax: z.string().optional().describe('Faxnummer'),
48
+ WWW: z.string().optional().describe('Webbplats'),
49
+ Address1: z.string().optional().describe('Adressrad 1'),
50
+ Address2: z.string().optional().describe('Adressrad 2'),
51
+ ZipCode: z.string().optional().describe('Postnummer'),
52
+ City: z.string().optional().describe('Ort'),
53
+ CountryCode: z.string().optional().describe('Landskod (t.ex. "SE") — det skrivbara landfältet'),
54
+ DeliveryName: z.string().optional().describe('Leveransadress namn'),
55
+ DeliveryAddress1: z.string().optional().describe('Leveransadress rad 1'),
56
+ DeliveryAddress2: z.string().optional().describe('Leveransadress rad 2'),
57
+ DeliveryZipCode: z.string().optional().describe('Leveransadress postnummer'),
58
+ DeliveryCity: z.string().optional().describe('Leveransadress ort'),
59
+ DeliveryCountryCode: z.string().optional().describe('Leveransadress landskod'),
60
+ DeliveryFax: z.string().optional().describe('Leveransadress fax'),
61
+ DeliveryPhone1: z.string().optional().describe('Leveransadress telefon'),
62
+ DeliveryPhone2: z.string().optional().describe('Leveransadress alternativt telefon'),
63
+ VisitingAddress: z.string().optional().describe('Besöksadress'),
64
+ VisitingZipCode: z.string().optional().describe('Besöksadress postnummer'),
65
+ VisitingCity: z.string().optional().describe('Besöksadress ort'),
66
+ VisitingCountryCode: z.string().optional().describe('Besöksadress landskod'),
67
+ GLN: z.string().optional().describe('GLN-nummer (13 tecken)'),
68
+ GLNDelivery: z.string().optional().describe('GLN-nummer för leverans (13 tecken)'),
69
+ ExternalReference: z.string().optional().describe('Externt referens-id'),
70
+ OurReference: z.string().optional().describe('Vår referens'),
71
+ YourReference: z.string().optional().describe('Er referens'),
72
+ Comments: z.string().optional().describe('Kommentarer'),
73
+ Currency: z.string().optional().describe('Valuta (t.ex. "SEK")'),
74
+ CostCenter: z.string().optional().describe('Kostnadsställe'),
75
+ Project: z.string().optional().describe('Projektnummer'),
76
+ PriceList: z.string().optional().describe('Prislista'),
77
+ TermsOfDelivery: z.string().optional().describe('Leveransvillkor (kod)'),
78
+ TermsOfPayment: z.string().optional().describe('Betalningsvillkor (kod)'),
79
+ WayOfDelivery: z.string().optional().describe('Leveranssätt (kod)'),
80
+ VATNumber: z.string().optional().describe('Momsregistreringsnummer'),
81
+ VATType: z
82
+ .enum(['SEVAT', 'SEREVERSEDVAT', 'EUREVERSEDVAT', 'EUVAT', 'EXPORT'])
83
+ .optional()
84
+ .describe('Momstyp'),
85
+ SalesAccount: z.string().optional().describe('Försäljningskonto (4 siffror)'),
86
+ InvoiceAdministrationFee: z.string().optional().describe('Faktureringsavgift'),
87
+ InvoiceDiscount: z.number().optional().describe('Fakturarabatt i procent'),
88
+ InvoiceFreight: z.string().optional().describe('Fraktavgift'),
89
+ InvoiceRemark: z.string().optional().describe('Fakturaanmärkning'),
90
+ ShowPriceVATIncluded: z.boolean().optional().describe('Visa priser inklusive moms'),
91
+ EmailInvoice: z.string().optional().describe('E-post för fakturor'),
92
+ EmailInvoiceCC: z.string().optional().describe('Kopia (CC) för fakturamejl'),
93
+ EmailInvoiceBCC: z.string().optional().describe('Hemlig kopia (BCC) för fakturamejl'),
94
+ EmailOffer: z.string().optional().describe('E-post för offerter'),
95
+ EmailOfferCC: z.string().optional().describe('Kopia (CC) för offertmejl'),
96
+ EmailOfferBCC: z.string().optional().describe('Hemlig kopia (BCC) för offertmejl'),
97
+ EmailOrder: z.string().optional().describe('E-post för ordrar'),
98
+ EmailOrderCC: z.string().optional().describe('Kopia (CC) för ordermejl'),
99
+ EmailOrderBCC: z.string().optional().describe('Hemlig kopia (BCC) för ordermejl'),
100
+ Active: z.boolean().optional().describe('Aktiv kund'),
101
+ };
8
102
  export function registerCustomerTools(server, operations = defaultFortnoxOperations) {
9
- const { listCustomers, getCustomer, createCustomer, updateCustomer } = operations;
103
+ const { listCustomers, getCustomer, createCustomer, updateCustomer, deleteCustomer } = operations;
10
104
  server.tool('fortnox_list_customers', 'Lista/sök kunder i Fortnox. Returnerar: CustomerNumber, Name, OrganisationNumber, City, Email.', {
11
105
  search: z.string().optional().describe('Sökterm (namn, kundnummer, orgnummer)'),
12
106
  page: z.number().optional().describe('Sidnummer (default 1)'),
@@ -17,7 +111,7 @@ export function registerCustomerTools(server, operations = defaultFortnoxOperati
17
111
  const data = await listCustomers({ search, page, limit, all });
18
112
  return listResponse(data.Customers ?? [], customerListColumns, data, data.MetaInformation, includeRaw);
19
113
  });
20
- server.tool('fortnox_get_customer', 'Hämta en enskild kund från Fortnox. Returnerar: CustomerNumber, Name, OrganisationNumber, Email, Phone, Address1, ZipCode, City, Country, VATNumber.', {
114
+ server.tool('fortnox_get_customer', 'Hämta en enskild kund från Fortnox. Returnerar: CustomerNumber, Name, Type, OrganisationNumber, Email, Phone1, Address1, ZipCode, City, Country, VATNumber.', {
21
115
  customerNumber: CustomerNumberSchema.describe('Kundnummer'),
22
116
  includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
23
117
  }, async ({ customerNumber, includeRaw }) => {
@@ -25,15 +119,8 @@ export function registerCustomerTools(server, operations = defaultFortnoxOperati
25
119
  return detailResponse(data, customerDetailColumns, data, includeRaw);
26
120
  });
27
121
  server.tool('fortnox_create_customer', 'Skapa en ny kund i Fortnox', {
122
+ ...customerWritableFields,
28
123
  Name: z.string().describe('Kundnamn'),
29
- OrganisationNumber: z.string().optional().describe('Organisationsnummer'),
30
- Email: z.string().optional().describe('E-postadress'),
31
- Phone: z.string().optional().describe('Telefonnummer'),
32
- Address1: z.string().optional().describe('Adressrad 1'),
33
- Address2: z.string().optional().describe('Adressrad 2'),
34
- ZipCode: z.string().optional().describe('Postnummer'),
35
- City: z.string().optional().describe('Ort'),
36
- VATNumber: z.string().optional().describe('Momsregistreringsnummer'),
37
124
  confirm: z.boolean().optional().describe('Bekräfta att kunden ska skapas'),
38
125
  dryRun: z.boolean().optional().describe('Visa vad som skulle skickas utan att skapa kunden'),
39
126
  includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
@@ -48,15 +135,7 @@ export function registerCustomerTools(server, operations = defaultFortnoxOperati
48
135
  });
49
136
  server.tool('fortnox_update_customer', 'Uppdatera en befintlig kund i Fortnox', {
50
137
  customerNumber: CustomerNumberSchema.describe('Kundnummer att uppdatera'),
51
- Name: z.string().optional().describe('Kundnamn'),
52
- OrganisationNumber: z.string().optional().describe('Organisationsnummer'),
53
- Email: z.string().optional().describe('E-postadress'),
54
- Phone: z.string().optional().describe('Telefonnummer'),
55
- Address1: z.string().optional().describe('Adressrad 1'),
56
- Address2: z.string().optional().describe('Adressrad 2'),
57
- ZipCode: z.string().optional().describe('Postnummer'),
58
- City: z.string().optional().describe('Ort'),
59
- VATNumber: z.string().optional().describe('Momsregistreringsnummer'),
138
+ ...customerWritableFields,
60
139
  confirm: z.boolean().optional().describe('Bekräfta att kunden ska uppdateras'),
61
140
  dryRun: z
62
141
  .boolean()
@@ -72,5 +151,17 @@ export function registerCustomerTools(server, operations = defaultFortnoxOperati
72
151
  const data = await updateCustomer(customerNumber, fields);
73
152
  return detailResponse(data, customerDetailColumns, data, includeRaw);
74
153
  });
154
+ server.tool('fortnox_delete_customer', 'Ta bort en kund i Fortnox', {
155
+ customerNumber: CustomerNumberSchema.describe('Kundnummer att ta bort'),
156
+ confirm: z.boolean().optional().describe('Bekräfta att kunden ska tas bort'),
157
+ dryRun: z.boolean().optional().describe('Visa vad som skulle göras utan att ta bort kunden'),
158
+ }, async ({ customerNumber, confirm, dryRun }) => {
159
+ if (dryRun)
160
+ return dryRunResponse(`delete customer ${customerNumber}`);
161
+ if (!confirm)
162
+ requireConfirmation(`delete customer ${customerNumber}`);
163
+ await deleteCustomer(customerNumber);
164
+ return textResponse(`Customer ${customerNumber} deleted.`);
165
+ });
75
166
  }
76
167
  //# sourceMappingURL=customers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"customers.js","sourceRoot":"","sources":["../../src/tools/customers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"customers.js","sourceRoot":"","sources":["../../src/tools/customers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { type FortnoxOperations } from '../operations/index.js';
3
+ export declare function registerFileTools(server: McpServer, operations?: FortnoxOperations): void;
4
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/tools/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAmB1F,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,UAAU,GAAE,iBAA4C,GACvD,IAAI,CAkLN"}
@@ -0,0 +1,120 @@
1
+ import { z } from 'zod';
2
+ import { defaultFortnoxOperations } from '../operations/index.js';
3
+ import { privateOutputPath, writeBinaryFile } from '../safe-file-output.js';
4
+ import { detailResponse, dryRunResponse, listResponse, requireConfirmation, textResponse, } from '../tool-output.js';
5
+ import { referenceDataColumns } from '../views.js';
6
+ function folderItems(raw) {
7
+ const folder = (raw.Folder ?? {});
8
+ return [
9
+ ...(folder.Folders ?? []),
10
+ ...(folder.Files ?? []),
11
+ ];
12
+ }
13
+ export function registerFileTools(server, operations = defaultFortnoxOperations) {
14
+ const { listArchive, getArchiveEntry, uploadArchiveFile, deleteArchivePath, deleteArchiveEntry, listInbox, uploadInboxEntry, getInboxFile, deleteInboxEntry, } = operations;
15
+ server.tool('fortnox_list_archive', 'Lista mappar och filer i Fortnox arkiv', {
16
+ path: z.string().optional().describe('Arkivsökväg'),
17
+ fileId: z.string().optional().describe('Valfritt fil-ID'),
18
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
19
+ }, async ({ path, fileId, includeRaw }) => {
20
+ const raw = await listArchive({ path, fileId });
21
+ return listResponse(folderItems(raw), referenceDataColumns, raw, undefined, includeRaw);
22
+ });
23
+ server.tool('fortnox_get_archive_entry', 'Ladda ner en fil från Fortnox arkiv till en säker lokal sökväg', {
24
+ id: z.string().describe('Arkivpostens ID'),
25
+ path: z.string().optional().describe('Arkivsökväg'),
26
+ fileId: z.string().optional().describe('Valfritt fil-ID'),
27
+ outputPath: z.string().optional().describe('Målsökväg; utelämna för privat tempkatalog'),
28
+ overwrite: z.boolean().optional().describe('Tillåt överskrivning av vanlig fil'),
29
+ }, async ({ id, path, fileId, outputPath, overwrite }) => {
30
+ const file = await getArchiveEntry(id, { path, fileId });
31
+ const target = writeBinaryFile(outputPath ?? privateOutputPath('noxctl-', `archive-${id}`), file.buffer, overwrite);
32
+ return textResponse(`Archive file ${id} saved to ${target} (${file.buffer.length} bytes).`);
33
+ });
34
+ server.tool('fortnox_upload_archive_file', 'Ladda upp en lokal fil till Fortnox arkiv', {
35
+ filePath: z.string().describe('Lokal filsökväg'),
36
+ folderId: z.string().optional().describe('Målmappens ID'),
37
+ path: z.string().optional().describe('Målsökväg i arkivet'),
38
+ confirm: z.boolean().optional().describe('Bekräfta uppladdningen'),
39
+ dryRun: z.boolean().optional().describe('Visa åtgärden utan att läsa eller ladda upp filen'),
40
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
41
+ }, async ({ filePath, folderId, path, confirm, dryRun, includeRaw }) => {
42
+ const target = `upload ${filePath} to archive`;
43
+ if (dryRun)
44
+ return dryRunResponse(target, { folderId, path });
45
+ if (!confirm)
46
+ requireConfirmation(target);
47
+ const raw = await uploadArchiveFile(filePath, { folderId, path });
48
+ return detailResponse((raw.File ?? raw), referenceDataColumns, raw, includeRaw);
49
+ });
50
+ server.tool('fortnox_delete_archive_path', 'Ta bort en sökväg i Fortnox arkiv', {
51
+ path: z.string().min(1).describe('Exakt arkivsökväg att ta bort'),
52
+ confirm: z.boolean().optional().describe('Bekräfta borttagningen'),
53
+ dryRun: z.boolean().optional().describe('Visa åtgärden utan att ta bort'),
54
+ }, async ({ path, confirm, dryRun }) => {
55
+ const target = `delete archive path ${JSON.stringify(path)}`;
56
+ if (dryRun)
57
+ return dryRunResponse(target);
58
+ if (!confirm)
59
+ requireConfirmation(target);
60
+ await deleteArchivePath(path);
61
+ return textResponse(`Archive path ${JSON.stringify(path)} deleted.`);
62
+ });
63
+ server.tool('fortnox_delete_archive_entry', 'Ta bort en post i Fortnox arkiv', {
64
+ id: z.string().describe('Arkivpostens ID'),
65
+ path: z.string().optional().describe('Arkivsökväg'),
66
+ confirm: z.boolean().optional().describe('Bekräfta borttagningen'),
67
+ dryRun: z.boolean().optional().describe('Visa åtgärden utan att ta bort'),
68
+ }, async ({ id, path, confirm, dryRun }) => {
69
+ const target = `delete archive entry ${id}`;
70
+ if (dryRun)
71
+ return dryRunResponse(target, { path });
72
+ if (!confirm)
73
+ requireConfirmation(target);
74
+ await deleteArchiveEntry(id, path);
75
+ return textResponse(`Archive entry ${id} deleted.`);
76
+ });
77
+ server.tool('fortnox_list_inbox', 'Lista mappar och filer i Fortnox inkorg', { includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox') }, async ({ includeRaw }) => {
78
+ const raw = await listInbox();
79
+ return listResponse(folderItems(raw), referenceDataColumns, raw, undefined, includeRaw);
80
+ });
81
+ server.tool('fortnox_upload_inbox_file', 'Ladda upp en lokal fil till Fortnox inkorg', {
82
+ filePath: z.string().describe('Lokal filsökväg'),
83
+ folderId: z.string().optional().describe('Målmappens ID'),
84
+ path: z.string().optional().describe('Målsökväg i inkorgen'),
85
+ confirm: z.boolean().optional().describe('Bekräfta uppladdningen'),
86
+ dryRun: z.boolean().optional().describe('Visa åtgärden utan att läsa eller ladda upp filen'),
87
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
88
+ }, async ({ filePath, folderId, path, confirm, dryRun, includeRaw }) => {
89
+ const target = `upload ${filePath} to inbox`;
90
+ if (dryRun)
91
+ return dryRunResponse(target, { folderId, path });
92
+ if (!confirm)
93
+ requireConfirmation(target);
94
+ const raw = await uploadInboxEntry(filePath, { folderId, path });
95
+ return detailResponse((raw.File ?? raw), referenceDataColumns, raw, includeRaw);
96
+ });
97
+ server.tool('fortnox_get_inbox_file', 'Ladda ner en fil från Fortnox inkorg till en säker lokal sökväg', {
98
+ id: z.string().describe('Fil-ID'),
99
+ outputPath: z.string().optional().describe('Målsökväg; utelämna för privat tempkatalog'),
100
+ overwrite: z.boolean().optional().describe('Tillåt överskrivning av vanlig fil'),
101
+ }, async ({ id, outputPath, overwrite }) => {
102
+ const file = await getInboxFile(id);
103
+ const target = writeBinaryFile(outputPath ?? privateOutputPath('noxctl-', `inbox-${id}`), file.buffer, overwrite);
104
+ return textResponse(`Inbox file ${id} saved to ${target} (${file.buffer.length} bytes).`);
105
+ });
106
+ server.tool('fortnox_delete_inbox_entry', 'Ta bort en fil eller post från Fortnox inkorg', {
107
+ id: z.string().describe('Postens ID'),
108
+ confirm: z.boolean().optional().describe('Bekräfta borttagningen'),
109
+ dryRun: z.boolean().optional().describe('Visa åtgärden utan att ta bort'),
110
+ }, async ({ id, confirm, dryRun }) => {
111
+ const target = `delete inbox entry ${id}`;
112
+ if (dryRun)
113
+ return dryRunResponse(target);
114
+ if (!confirm)
115
+ requireConfirmation(target);
116
+ await deleteInboxEntry(id);
117
+ return textResponse(`Inbox entry ${id} deleted.`);
118
+ });
119
+ }
120
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/tools/files.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"financial-years.d.ts","sourceRoot":"","sources":["../../src/tools/financial-years.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAQ1F,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,UAAU,GAAE,iBAA4C,GACvD,IAAI,CAmDN"}
1
+ {"version":3,"file":"financial-years.d.ts","sourceRoot":"","sources":["../../src/tools/financial-years.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAc1F,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,UAAU,GAAE,iBAA4C,GACvD,IAAI,CAuEN"}
@@ -1,9 +1,9 @@
1
1
  import { z } from 'zod';
2
2
  import { defaultFortnoxOperations } from '../operations/index.js';
3
3
  import { financialYearListColumns, financialYearDetailColumns, lockedPeriodDetailColumns, } from '../views.js';
4
- import { detailResponse, listResponse, textResponse } from '../tool-output.js';
4
+ import { detailResponse, dryRunResponse, listResponse, requireConfirmation, textResponse, } from '../tool-output.js';
5
5
  export function registerFinancialYearTools(server, operations = defaultFortnoxOperations) {
6
- const { listFinancialYears, getFinancialYear, getLockedPeriod } = operations;
6
+ const { listFinancialYears, getFinancialYear, createFinancialYear, getLockedPeriod } = operations;
7
7
  server.tool('fortnox_list_financialyears', 'Lista räkenskapsår i Fortnox. Returnerar: Id, FromDate, ToDate, AccountingMethod, AccountChartType. Kan filtreras till det räkenskapsår som innehåller ett visst datum.', {
8
8
  date: z
9
9
  .string()
@@ -21,6 +21,22 @@ export function registerFinancialYearTools(server, operations = defaultFortnoxOp
21
21
  const data = await getFinancialYear(id);
22
22
  return detailResponse(data, financialYearDetailColumns, data, includeRaw);
23
23
  });
24
+ server.tool('fortnox_create_financialyear', 'Skapa ett räkenskapsår i Fortnox', {
25
+ FromDate: z.string().describe('Startdatum (YYYY-MM-DD)'),
26
+ ToDate: z.string().describe('Slutdatum (YYYY-MM-DD)'),
27
+ AccountingMethod: z.enum(['ACCRUAL', 'CASH']).optional().describe('Bokföringsmetod'),
28
+ AccountChartType: z.string().optional().describe('Kontoplanstyp'),
29
+ confirm: z.boolean().optional().describe('Bekräfta att räkenskapsåret ska skapas'),
30
+ dryRun: z.boolean().optional().describe('Visa payload utan att skapa'),
31
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
32
+ }, async ({ confirm, dryRun, includeRaw, ...fields }) => {
33
+ if (dryRun)
34
+ return dryRunResponse('create financial year', { FinancialYear: fields });
35
+ if (!confirm)
36
+ requireConfirmation('create financial year');
37
+ const year = await createFinancialYear(fields);
38
+ return detailResponse(year, financialYearDetailColumns, year, includeRaw);
39
+ });
24
40
  server.tool('fortnox_get_lockedperiod', 'Hämta låst period från Fortnox (bokföringen är låst t.o.m. detta datum). Tomt svar betyder att ingen period är låst. Användbart innan verifikat/fakturor bokförs för att undvika fel om låst period.', {
25
41
  includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
26
42
  }, async ({ includeRaw }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"financial-years.js","sourceRoot":"","sources":["../../src/tools/financial-years.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAA0B,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE/E,MAAM,UAAU,0BAA0B,CACxC,MAAiB,EACjB,aAAgC,wBAAwB;IAExD,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC;IAC7E,MAAM,CAAC,IAAI,CACT,6BAA6B,EAC7B,yKAAyK,EACzK;QACE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8DAA8D,CAAC;QAC3E,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,OAAO,YAAY,CACjB,IAAI,CAAC,cAAc,IAAI,EAAE,EACzB,wBAAwB,EACxB,IAAI,EACJ,IAAI,CAAC,eAAe,EACpB,UAAU,CACX,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,8CAA8C,EAC9C;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC7C,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACxC,OAAO,cAAc,CAAC,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAC5E,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,sMAAsM,EACtM;QACE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,YAAY,CAAC,uBAAuB,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"financial-years.js","sourceRoot":"","sources":["../../src/tools/financial-years.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { type FortnoxOperations } from '../operations/index.js';
3
+ export declare function registerGeneralLedgerTools(server: McpServer, operations?: FortnoxOperations): void;
4
+ //# sourceMappingURL=general-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"general-ledger.d.ts","sourceRoot":"","sources":["../../src/tools/general-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAc1F,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,UAAU,GAAE,iBAA4C,GACvD,IAAI,CA2DN"}
@@ -0,0 +1,61 @@
1
+ import { z } from 'zod';
2
+ import { defaultFortnoxOperations } from '../operations/index.js';
3
+ import { generalLedgerColumns } from '../views.js';
4
+ import { listResponse } from '../tool-output.js';
5
+ // A 20,000-posting fixture (a real full year for a high-volume company —
6
+ // exactly the scenario this tool exists for) formats to ~1.78 MB of table
7
+ // text, which can exceed MCP/client/model limits and hands back more ledger
8
+ // data than a caller can realistically consume in one response. Cap it the
9
+ // same way every other list tool in this codebase already reports paging
10
+ // (`@TotalResources`/`@TotalPages`/`@CurrentPage`), so a caller who needs the
11
+ // rest can page through it explicitly instead of it arriving unbounded.
12
+ const DEFAULT_LIMIT = 500;
13
+ const MAX_LIMIT = 2000;
14
+ export function registerGeneralLedgerTools(server, operations = defaultFortnoxOperations) {
15
+ const { getGeneralLedger } = operations;
16
+ server.tool('fortnox_general_ledger', 'Hämta bokförda transaktioner (huvudbok) för en period — en rad per kontorad, med datum, konto, text, debet och kredit. Bygger på Fortnox SIE-export och hämtar hela perioden i ett anrop, till skillnad från fortnox_list_vouchers som inte inkluderar belopp. Användbart för avstämning, periodjämförelser och att slå upp enskilda bokföringar/fakturor över tid. Resultatet är sidindelat — se sidfoten för totalt antal rader.', {
17
+ fromDate: z.string().describe('Från datum (YYYY-MM-DD)'),
18
+ toDate: z.string().describe('Till datum (YYYY-MM-DD)'),
19
+ financialYear: z
20
+ .number()
21
+ .int()
22
+ .positive()
23
+ .optional()
24
+ .describe('Räkenskapsår-ID (från fortnox_list_financialyears) — löses annars upp automatiskt från fromDate'),
25
+ account: z.string().optional().describe('Filtrera på ett specifikt kontonummer'),
26
+ series: z
27
+ .string()
28
+ .optional()
29
+ .describe('Filtrera på en specifik verifikationsserie (t.ex. "A")'),
30
+ page: z.number().int().min(1).optional().describe('Sidnummer (default 1)'),
31
+ limit: z
32
+ .number()
33
+ .int()
34
+ .min(1)
35
+ .max(MAX_LIMIT)
36
+ .optional()
37
+ .describe(`Antal rader per sida (default ${DEFAULT_LIMIT}, max ${MAX_LIMIT})`),
38
+ }, async ({ fromDate, toDate, financialYear, account, series, page, limit }) => {
39
+ let rows = await getGeneralLedger({ fromDate, toDate, financialYear });
40
+ if (account)
41
+ rows = rows.filter((r) => r.account === account);
42
+ if (series)
43
+ rows = rows.filter((r) => r.series === series);
44
+ const totalResources = rows.length;
45
+ const pageSize = Math.min(limit ?? DEFAULT_LIMIT, MAX_LIMIT);
46
+ const currentPage = page ?? 1;
47
+ const start = (currentPage - 1) * pageSize;
48
+ const pageRows = rows.slice(start, start + pageSize);
49
+ const totalPages = Math.max(1, Math.ceil(totalResources / pageSize));
50
+ // No `includeRaw`: this data comes from a parsed SIE text export, not a
51
+ // Fortnox JSON response, so there is no separate "raw" representation
52
+ // to hand back — offering one would just relabel these same rows as
53
+ // something they are not.
54
+ return listResponse(pageRows, generalLedgerColumns, undefined, {
55
+ '@TotalResources': totalResources,
56
+ '@TotalPages': totalPages,
57
+ '@CurrentPage': currentPage,
58
+ });
59
+ });
60
+ }
61
+ //# sourceMappingURL=general-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"general-ledger.js","sourceRoot":"","sources":["../../src/tools/general-ledger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAA0B,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,yEAAyE;AACzE,0EAA0E;AAC1E,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,8EAA8E;AAC9E,wEAAwE;AACxE,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB,MAAM,UAAU,0BAA0B,CACxC,MAAiB,EACjB,aAAgC,wBAAwB;IAExD,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC;IAExC,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,oaAAoa,EACpa;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACxD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACtD,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CACP,iGAAiG,CAClG;QACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QAChF,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,wDAAwD,CAAC;QACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC1E,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,SAAS,CAAC;aACd,QAAQ,EAAE;aACV,QAAQ,CAAC,iCAAiC,aAAa,SAAS,SAAS,GAAG,CAAC;KACjF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1E,IAAI,IAAI,GAAG,MAAM,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACvE,IAAI,OAAO;YAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QAC9D,IAAI,MAAM;YAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAE3D,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,aAAa,EAAE,SAAS,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC;QAErE,wEAAwE;QACxE,sEAAsE;QACtE,oEAAoE;QACpE,0BAA0B;QAC1B,OAAO,YAAY,CACjB,QAAgD,EAChD,oBAAoB,EACpB,SAAS,EACT;YACE,iBAAiB,EAAE,cAAc;YACjC,aAAa,EAAE,UAAU;YACzB,cAAc,EAAE,WAAW;SAC5B,CACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"invoice-payments.d.ts","sourceRoot":"","sources":["../../src/tools/invoice-payments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAY1F,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,SAAS,EACjB,UAAU,GAAE,iBAA4C,GACvD,IAAI,CAoFN"}
1
+ {"version":3,"file":"invoice-payments.d.ts","sourceRoot":"","sources":["../../src/tools/invoice-payments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAY1F,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,SAAS,EACjB,UAAU,GAAE,iBAA4C,GACvD,IAAI,CAoIN"}
@@ -4,7 +4,7 @@ import { invoicePaymentListColumns, invoicePaymentDetailColumns } from '../views
4
4
  import { confirmationResponse, detailResponse, dryRunResponse, listResponse, requireConfirmation, } from '../tool-output.js';
5
5
  const PaymentNumberSchema = z.string().regex(/^\d+$/, 'Payment number must be numeric');
6
6
  export function registerInvoicePaymentTools(server, operations = defaultFortnoxOperations) {
7
- const { listInvoicePayments, getInvoicePayment, createInvoicePayment, deleteInvoicePayment } = operations;
7
+ const { listInvoicePayments, getInvoicePayment, createInvoicePayment, updateInvoicePayment, deleteInvoicePayment, bookkeepInvoicePayment, } = operations;
8
8
  server.tool('fortnox_list_invoice_payments', 'Lista inbetalningar (kundfakturor) i Fortnox. Returnerar: Number, InvoiceNumber, PaymentDate, Amount.', {
9
9
  invoiceNumber: z.string().optional().describe('Filtrera på fakturanummer'),
10
10
  page: z.number().optional().describe('Sidnummer'),
@@ -57,5 +57,38 @@ export function registerInvoicePaymentTools(server, operations = defaultFortnoxO
57
57
  await deleteInvoicePayment(paymentNumber);
58
58
  return confirmationResponse(`Inbetalning ${paymentNumber} borttagen.`, {});
59
59
  });
60
+ server.tool('fortnox_update_invoice_payment', 'Uppdatera en inbetalning i Fortnox', {
61
+ paymentNumber: PaymentNumberSchema.describe('Betalningsnummer'),
62
+ InvoiceNumber: z.number().optional().describe('Fakturanummer'),
63
+ Amount: z.number().optional().describe('Belopp'),
64
+ PaymentDate: z.string().optional().describe('Betalningsdatum (YYYY-MM-DD)'),
65
+ Source: z.string().optional().describe('Betalningskälla'),
66
+ confirm: z.boolean().optional().describe('Bekräfta uppdateringen'),
67
+ dryRun: z.boolean().optional().describe('Visa payload utan att uppdatera'),
68
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
69
+ }, async ({ paymentNumber, confirm, dryRun, includeRaw, ...fields }) => {
70
+ if (dryRun) {
71
+ return dryRunResponse(`update invoice payment ${paymentNumber}`, {
72
+ InvoicePayment: fields,
73
+ });
74
+ }
75
+ if (!confirm)
76
+ requireConfirmation(`update invoice payment ${paymentNumber}`);
77
+ const payment = await updateInvoicePayment(paymentNumber, fields);
78
+ return detailResponse(payment, invoicePaymentDetailColumns, payment, includeRaw);
79
+ });
80
+ server.tool('fortnox_bookkeep_invoice_payment', 'Bokför en inbetalning i Fortnox', {
81
+ paymentNumber: PaymentNumberSchema.describe('Betalningsnummer'),
82
+ confirm: z.boolean().optional().describe('Bekräfta bokföringen'),
83
+ dryRun: z.boolean().optional().describe('Visa åtgärden utan att bokföra'),
84
+ includeRaw: z.boolean().optional().describe('Inkludera rå JSON från Fortnox'),
85
+ }, async ({ paymentNumber, confirm, dryRun, includeRaw }) => {
86
+ if (dryRun)
87
+ return dryRunResponse(`bookkeep invoice payment ${paymentNumber}`);
88
+ if (!confirm)
89
+ requireConfirmation(`bookkeep invoice payment ${paymentNumber}`);
90
+ const payment = await bookkeepInvoicePayment(paymentNumber);
91
+ return detailResponse(payment, invoicePaymentDetailColumns, payment, includeRaw);
92
+ });
60
93
  }
61
94
  //# sourceMappingURL=invoice-payments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invoice-payments.js","sourceRoot":"","sources":["../../src/tools/invoice-payments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invoice-payments.js","sourceRoot":"","sources":["../../src/tools/invoice-payments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAA0B,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAC;AAExF,MAAM,UAAU,2BAA2B,CACzC,MAAiB,EACjB,aAAgC,wBAAwB;IAExD,MAAM,EACJ,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,GACvB,GAAG,UAAU,CAAC;IACf,MAAM,CAAC,IAAI,CACT,+BAA+B,EAC/B,uGAAuG,EACvG;QACE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC1E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACjD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACvD,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACxD,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,YAAY,CACjB,IAAI,CAAC,eAAe,IAAI,EAAE,EAC1B,yBAAyB,EACzB,IAAI,EACJ,IAAI,CAAC,eAAe,EACpB,UAAU,CACX,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,6BAA6B,EAC7B,yGAAyG,EACzG;QACE,aAAa,EAAE,mBAAmB,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC/D,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACvD,OAAO,cAAc,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACnF,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gCAAgC,EAChC,wDAAwD,EACxD;QACE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACnD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAChE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACzD,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,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE;QACnD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,cAAc,CAAC,gCAAgC,MAAM,CAAC,aAAa,EAAE,EAAE;gBAC5E,cAAc,EAAE,MAAM;aACvB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,mBAAmB,CAAC,gCAAgC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QAE1F,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,cAAc,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACnF,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gCAAgC,EAChC,kCAAkC,EAClC;QACE,aAAa,EAAE,mBAAmB,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC3E,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACjF,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KACtF,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,cAAc,CAAC,0BAA0B,aAAa,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,mBAAmB,CAAC,0BAA0B,aAAa,EAAE,CAAC,CAAC;QAE7E,MAAM,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC1C,OAAO,oBAAoB,CAAC,eAAe,aAAa,aAAa,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gCAAgC,EAChC,oCAAoC,EACpC;QACE,aAAa,EAAE,mBAAmB,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC/D,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC9D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACzD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QAClE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC1E,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE;QAClE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,cAAc,CAAC,0BAA0B,aAAa,EAAE,EAAE;gBAC/D,cAAc,EAAE,MAAM;aACvB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,mBAAmB,CAAC,0BAA0B,aAAa,EAAE,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAClE,OAAO,cAAc,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACnF,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kCAAkC,EAClC,iCAAiC,EACjC;QACE,aAAa,EAAE,mBAAmB,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC/D,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAChE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACzE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;QACvD,IAAI,MAAM;YAAE,OAAO,cAAc,CAAC,4BAA4B,aAAa,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO;YAAE,mBAAmB,CAAC,4BAA4B,aAAa,EAAE,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAC5D,OAAO,cAAc,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACnF,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"invoices.d.ts","sourceRoot":"","sources":["../../src/tools/invoices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYpE,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA2H1F,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,UAAU,GAAE,iBAA4C,GACvD,IAAI,CAgUN"}
1
+ {"version":3,"file":"invoices.d.ts","sourceRoot":"","sources":["../../src/tools/invoices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA6E1F,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,UAAU,GAAE,iBAA4C,GACvD,IAAI,CAylBN"}