noxctl 0.7.3 → 0.8.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 (265) hide show
  1. package/README.md +89 -17
  2. package/dist/auth.d.ts +17 -1
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +122 -15
  5. package/dist/auth.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +45 -28
  8. package/dist/cli.js.map +1 -1
  9. package/dist/credentials-store.d.ts +3 -0
  10. package/dist/credentials-store.d.ts.map +1 -1
  11. package/dist/credentials-store.js +54 -10
  12. package/dist/credentials-store.js.map +1 -1
  13. package/dist/embedded.d.ts +15 -0
  14. package/dist/embedded.d.ts.map +1 -0
  15. package/dist/embedded.js +11 -0
  16. package/dist/embedded.js.map +1 -0
  17. package/dist/fortnox-client.d.ts +34 -25
  18. package/dist/fortnox-client.d.ts.map +1 -1
  19. package/dist/fortnox-client.js +130 -50
  20. package/dist/fortnox-client.js.map +1 -1
  21. package/dist/index.d.ts +7 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +50 -35
  24. package/dist/index.js.map +1 -1
  25. package/dist/keychain-target.d.ts +3 -0
  26. package/dist/keychain-target.d.ts.map +1 -1
  27. package/dist/keychain-target.js +28 -7
  28. package/dist/keychain-target.js.map +1 -1
  29. package/dist/operations/absencetransactions.d.ts +9 -6
  30. package/dist/operations/absencetransactions.d.ts.map +1 -1
  31. package/dist/operations/absencetransactions.js +42 -33
  32. package/dist/operations/absencetransactions.js.map +1 -1
  33. package/dist/operations/accounts.d.ts +6 -3
  34. package/dist/operations/accounts.d.ts.map +1 -1
  35. package/dist/operations/accounts.js +28 -24
  36. package/dist/operations/accounts.js.map +1 -1
  37. package/dist/operations/analytics.d.ts +35 -0
  38. package/dist/operations/analytics.d.ts.map +1 -1
  39. package/dist/operations/analytics.js +59 -35
  40. package/dist/operations/analytics.js.map +1 -1
  41. package/dist/operations/articles.d.ts +9 -6
  42. package/dist/operations/articles.d.ts.map +1 -1
  43. package/dist/operations/articles.js +36 -32
  44. package/dist/operations/articles.js.map +1 -1
  45. package/dist/operations/attendancetransactions.d.ts +9 -6
  46. package/dist/operations/attendancetransactions.d.ts.map +1 -1
  47. package/dist/operations/attendancetransactions.js +45 -36
  48. package/dist/operations/attendancetransactions.js.map +1 -1
  49. package/dist/operations/company.d.ts +5 -1
  50. package/dist/operations/company.d.ts.map +1 -1
  51. package/dist/operations/company.js +8 -4
  52. package/dist/operations/company.js.map +1 -1
  53. package/dist/operations/contracts.d.ts +12 -9
  54. package/dist/operations/contracts.d.ts.map +1 -1
  55. package/dist/operations/contracts.js +59 -47
  56. package/dist/operations/contracts.js.map +1 -1
  57. package/dist/operations/costcenters.d.ts +10 -7
  58. package/dist/operations/costcenters.d.ts.map +1 -1
  59. package/dist/operations/costcenters.js +39 -35
  60. package/dist/operations/costcenters.js.map +1 -1
  61. package/dist/operations/customers.d.ts +9 -6
  62. package/dist/operations/customers.d.ts.map +1 -1
  63. package/dist/operations/customers.js +46 -42
  64. package/dist/operations/customers.js.map +1 -1
  65. package/dist/operations/employees.d.ts +9 -6
  66. package/dist/operations/employees.d.ts.map +1 -1
  67. package/dist/operations/employees.js +35 -31
  68. package/dist/operations/employees.js.map +1 -1
  69. package/dist/operations/financial-reports.d.ts +7 -2
  70. package/dist/operations/financial-reports.d.ts.map +1 -1
  71. package/dist/operations/financial-reports.js +169 -165
  72. package/dist/operations/financial-reports.js.map +1 -1
  73. package/dist/operations/financial-years.d.ts +8 -5
  74. package/dist/operations/financial-years.d.ts.map +1 -1
  75. package/dist/operations/financial-years.js +33 -29
  76. package/dist/operations/financial-years.js.map +1 -1
  77. package/dist/operations/index.d.ts +301 -0
  78. package/dist/operations/index.d.ts.map +1 -0
  79. package/dist/operations/index.js +64 -0
  80. package/dist/operations/index.js.map +1 -0
  81. package/dist/operations/invoice-payments.d.ts +10 -7
  82. package/dist/operations/invoice-payments.d.ts.map +1 -1
  83. package/dist/operations/invoice-payments.js +45 -35
  84. package/dist/operations/invoice-payments.js.map +1 -1
  85. package/dist/operations/invoices.d.ts +14 -30
  86. package/dist/operations/invoices.d.ts.map +1 -1
  87. package/dist/operations/invoices.js +131 -113
  88. package/dist/operations/invoices.js.map +1 -1
  89. package/dist/operations/offers.d.ts +11 -8
  90. package/dist/operations/offers.d.ts.map +1 -1
  91. package/dist/operations/offers.js +54 -43
  92. package/dist/operations/offers.js.map +1 -1
  93. package/dist/operations/orders.d.ts +10 -7
  94. package/dist/operations/orders.d.ts.map +1 -1
  95. package/dist/operations/orders.js +43 -39
  96. package/dist/operations/orders.js.map +1 -1
  97. package/dist/operations/pricelists.d.ts +16 -10
  98. package/dist/operations/pricelists.d.ts.map +1 -1
  99. package/dist/operations/pricelists.js +56 -48
  100. package/dist/operations/pricelists.js.map +1 -1
  101. package/dist/operations/projects.d.ts +9 -6
  102. package/dist/operations/projects.d.ts.map +1 -1
  103. package/dist/operations/projects.js +34 -30
  104. package/dist/operations/projects.js.map +1 -1
  105. package/dist/operations/recurrings.d.ts +14 -10
  106. package/dist/operations/recurrings.d.ts.map +1 -1
  107. package/dist/operations/recurrings.js +74 -59
  108. package/dist/operations/recurrings.js.map +1 -1
  109. package/dist/operations/salarytransactions.d.ts +9 -6
  110. package/dist/operations/salarytransactions.d.ts.map +1 -1
  111. package/dist/operations/salarytransactions.js +41 -32
  112. package/dist/operations/salarytransactions.js.map +1 -1
  113. package/dist/operations/scheduletimes.d.ts +7 -3
  114. package/dist/operations/scheduletimes.d.ts.map +1 -1
  115. package/dist/operations/scheduletimes.js +26 -22
  116. package/dist/operations/scheduletimes.js.map +1 -1
  117. package/dist/operations/supplier-invoice-payments.d.ts +9 -6
  118. package/dist/operations/supplier-invoice-payments.d.ts.map +1 -1
  119. package/dist/operations/supplier-invoice-payments.js +38 -29
  120. package/dist/operations/supplier-invoice-payments.js.map +1 -1
  121. package/dist/operations/supplier-invoices.d.ts +9 -6
  122. package/dist/operations/supplier-invoices.d.ts.map +1 -1
  123. package/dist/operations/supplier-invoices.js +41 -32
  124. package/dist/operations/supplier-invoices.js.map +1 -1
  125. package/dist/operations/suppliers.d.ts +9 -6
  126. package/dist/operations/suppliers.d.ts.map +1 -1
  127. package/dist/operations/suppliers.js +36 -32
  128. package/dist/operations/suppliers.js.map +1 -1
  129. package/dist/operations/tax.d.ts +5 -1
  130. package/dist/operations/tax.d.ts.map +1 -1
  131. package/dist/operations/tax.js +43 -39
  132. package/dist/operations/tax.js.map +1 -1
  133. package/dist/operations/taxreductions.d.ts +8 -5
  134. package/dist/operations/taxreductions.d.ts.map +1 -1
  135. package/dist/operations/taxreductions.js +28 -24
  136. package/dist/operations/taxreductions.js.map +1 -1
  137. package/dist/operations/vouchers.d.ts +11 -8
  138. package/dist/operations/vouchers.d.ts.map +1 -1
  139. package/dist/operations/vouchers.js +137 -122
  140. package/dist/operations/vouchers.js.map +1 -1
  141. package/dist/schema-audit-mappings.d.ts +9 -0
  142. package/dist/schema-audit-mappings.d.ts.map +1 -0
  143. package/dist/schema-audit-mappings.js +45 -0
  144. package/dist/schema-audit-mappings.js.map +1 -0
  145. package/dist/schema-audit.d.ts +45 -0
  146. package/dist/schema-audit.d.ts.map +1 -0
  147. package/dist/schema-audit.js +132 -0
  148. package/dist/schema-audit.js.map +1 -0
  149. package/dist/strict-mcp-server.d.ts +17 -0
  150. package/dist/strict-mcp-server.d.ts.map +1 -0
  151. package/dist/strict-mcp-server.js +35 -0
  152. package/dist/strict-mcp-server.js.map +1 -0
  153. package/dist/tools/absencetransactions.d.ts +2 -1
  154. package/dist/tools/absencetransactions.d.ts.map +1 -1
  155. package/dist/tools/absencetransactions.js +3 -2
  156. package/dist/tools/absencetransactions.js.map +1 -1
  157. package/dist/tools/analytics.d.ts +2 -1
  158. package/dist/tools/analytics.d.ts.map +1 -1
  159. package/dist/tools/analytics.js +3 -2
  160. package/dist/tools/analytics.js.map +1 -1
  161. package/dist/tools/articles.d.ts +2 -1
  162. package/dist/tools/articles.d.ts.map +1 -1
  163. package/dist/tools/articles.js +3 -2
  164. package/dist/tools/articles.js.map +1 -1
  165. package/dist/tools/attendancetransactions.d.ts +2 -1
  166. package/dist/tools/attendancetransactions.d.ts.map +1 -1
  167. package/dist/tools/attendancetransactions.js +3 -2
  168. package/dist/tools/attendancetransactions.js.map +1 -1
  169. package/dist/tools/bookkeeping.d.ts +2 -1
  170. package/dist/tools/bookkeeping.d.ts.map +1 -1
  171. package/dist/tools/bookkeeping.js +4 -4
  172. package/dist/tools/bookkeeping.js.map +1 -1
  173. package/dist/tools/company.d.ts +2 -1
  174. package/dist/tools/company.d.ts.map +1 -1
  175. package/dist/tools/company.js +3 -2
  176. package/dist/tools/company.js.map +1 -1
  177. package/dist/tools/contracts.d.ts +2 -1
  178. package/dist/tools/contracts.d.ts.map +1 -1
  179. package/dist/tools/contracts.js +3 -2
  180. package/dist/tools/contracts.js.map +1 -1
  181. package/dist/tools/costcenters.d.ts +2 -1
  182. package/dist/tools/costcenters.d.ts.map +1 -1
  183. package/dist/tools/costcenters.js +3 -2
  184. package/dist/tools/costcenters.js.map +1 -1
  185. package/dist/tools/customers.d.ts +2 -1
  186. package/dist/tools/customers.d.ts.map +1 -1
  187. package/dist/tools/customers.js +3 -2
  188. package/dist/tools/customers.js.map +1 -1
  189. package/dist/tools/employees.d.ts +2 -1
  190. package/dist/tools/employees.d.ts.map +1 -1
  191. package/dist/tools/employees.js +3 -2
  192. package/dist/tools/employees.js.map +1 -1
  193. package/dist/tools/financial-reports.d.ts +2 -1
  194. package/dist/tools/financial-reports.d.ts.map +1 -1
  195. package/dist/tools/financial-reports.js +3 -2
  196. package/dist/tools/financial-reports.js.map +1 -1
  197. package/dist/tools/financial-years.d.ts +2 -1
  198. package/dist/tools/financial-years.d.ts.map +1 -1
  199. package/dist/tools/financial-years.js +3 -2
  200. package/dist/tools/financial-years.js.map +1 -1
  201. package/dist/tools/invoice-payments.d.ts +2 -1
  202. package/dist/tools/invoice-payments.d.ts.map +1 -1
  203. package/dist/tools/invoice-payments.js +3 -2
  204. package/dist/tools/invoice-payments.js.map +1 -1
  205. package/dist/tools/invoices.d.ts +2 -1
  206. package/dist/tools/invoices.d.ts.map +1 -1
  207. package/dist/tools/invoices.js +58 -19
  208. package/dist/tools/invoices.js.map +1 -1
  209. package/dist/tools/offers.d.ts +2 -1
  210. package/dist/tools/offers.d.ts.map +1 -1
  211. package/dist/tools/offers.js +50 -19
  212. package/dist/tools/offers.js.map +1 -1
  213. package/dist/tools/orders.d.ts +2 -1
  214. package/dist/tools/orders.d.ts.map +1 -1
  215. package/dist/tools/orders.js +58 -18
  216. package/dist/tools/orders.js.map +1 -1
  217. package/dist/tools/pricelists.d.ts +2 -1
  218. package/dist/tools/pricelists.d.ts.map +1 -1
  219. package/dist/tools/pricelists.js +3 -2
  220. package/dist/tools/pricelists.js.map +1 -1
  221. package/dist/tools/projects.d.ts +2 -1
  222. package/dist/tools/projects.d.ts.map +1 -1
  223. package/dist/tools/projects.js +3 -2
  224. package/dist/tools/projects.js.map +1 -1
  225. package/dist/tools/recurrings.d.ts +2 -1
  226. package/dist/tools/recurrings.d.ts.map +1 -1
  227. package/dist/tools/recurrings.js +3 -2
  228. package/dist/tools/recurrings.js.map +1 -1
  229. package/dist/tools/salarytransactions.d.ts +2 -1
  230. package/dist/tools/salarytransactions.d.ts.map +1 -1
  231. package/dist/tools/salarytransactions.js +3 -2
  232. package/dist/tools/salarytransactions.js.map +1 -1
  233. package/dist/tools/scheduletimes.d.ts +2 -1
  234. package/dist/tools/scheduletimes.d.ts.map +1 -1
  235. package/dist/tools/scheduletimes.js +3 -2
  236. package/dist/tools/scheduletimes.js.map +1 -1
  237. package/dist/tools/status.d.ts.map +1 -1
  238. package/dist/tools/status.js +5 -4
  239. package/dist/tools/status.js.map +1 -1
  240. package/dist/tools/supplier-invoice-payments.d.ts +2 -1
  241. package/dist/tools/supplier-invoice-payments.d.ts.map +1 -1
  242. package/dist/tools/supplier-invoice-payments.js +3 -2
  243. package/dist/tools/supplier-invoice-payments.js.map +1 -1
  244. package/dist/tools/supplier-invoices.d.ts +2 -1
  245. package/dist/tools/supplier-invoices.d.ts.map +1 -1
  246. package/dist/tools/supplier-invoices.js +47 -6
  247. package/dist/tools/supplier-invoices.js.map +1 -1
  248. package/dist/tools/suppliers.d.ts +2 -1
  249. package/dist/tools/suppliers.d.ts.map +1 -1
  250. package/dist/tools/suppliers.js +3 -2
  251. package/dist/tools/suppliers.js.map +1 -1
  252. package/dist/tools/tax.d.ts +2 -1
  253. package/dist/tools/tax.d.ts.map +1 -1
  254. package/dist/tools/tax.js +3 -2
  255. package/dist/tools/tax.js.map +1 -1
  256. package/dist/tools/taxreductions.d.ts +2 -1
  257. package/dist/tools/taxreductions.d.ts.map +1 -1
  258. package/dist/tools/taxreductions.js +3 -2
  259. package/dist/tools/taxreductions.js.map +1 -1
  260. package/dist/version.d.ts +2 -0
  261. package/dist/version.d.ts.map +1 -0
  262. package/dist/version.js +3 -0
  263. package/dist/version.js.map +1 -0
  264. package/docs/embedded.md +60 -0
  265. package/package.json +34 -4
@@ -1,125 +1,143 @@
1
- import { fortnoxRequest, fortnoxRequestPdf, fortnoxRequestPdfFromMutation, fetchAllPages, } from '../fortnox-client.js';
1
+ import { defaultFortnoxTransport } from '../fortnox-client.js';
2
2
  import { documentSegment } from '../identifiers.js';
3
- export async function listInvoices(params = {}) {
4
- const queryParams = {
5
- filter: params.filter,
6
- customernumber: params.customerNumber,
7
- fromdate: params.fromDate,
8
- todate: params.toDate,
9
- };
10
- if (params.all) {
11
- const { items, totalResources } = await fetchAllPages('invoices', 'Invoices', queryParams);
12
- return {
13
- Invoices: items,
14
- MetaInformation: { '@TotalResources': totalResources, '@TotalPages': 1, '@CurrentPage': 1 },
3
+ export function createInvoiceOperations(transport) {
4
+ async function listInvoices(params = {}) {
5
+ const queryParams = {
6
+ filter: params.filter,
7
+ customernumber: params.customerNumber,
8
+ fromdate: params.fromDate,
9
+ todate: params.toDate,
15
10
  };
11
+ if (params.all) {
12
+ const { items, totalResources } = await transport.fetchAllPages('invoices', 'Invoices', queryParams);
13
+ return {
14
+ Invoices: items,
15
+ MetaInformation: { '@TotalResources': totalResources, '@TotalPages': 1, '@CurrentPage': 1 },
16
+ };
17
+ }
18
+ return transport.request('invoices', {
19
+ params: { ...queryParams, page: params.page || 1, limit: params.limit || 100 },
20
+ });
16
21
  }
17
- return fortnoxRequest('invoices', {
18
- params: { ...queryParams, page: params.page || 1, limit: params.limit || 100 },
19
- });
20
- }
21
- export async function getInvoice(documentNumber) {
22
- const data = await fortnoxRequest(`invoices/${documentSegment(documentNumber)}`);
23
- return data.Invoice;
24
- }
25
- export async function createInvoice(params) {
26
- const data = await fortnoxRequest('invoices', {
27
- method: 'POST',
28
- body: { Invoice: params },
29
- });
30
- return data.Invoice;
31
- }
32
- export async function updateInvoice(documentNumber, fields) {
33
- const { documentNumber: _, ...body } = fields;
34
- const data = await fortnoxRequest(`invoices/${documentSegment(documentNumber)}`, {
35
- method: 'PUT',
36
- body: { Invoice: body },
37
- });
38
- return data.Invoice;
39
- }
40
- export async function sendInvoice(documentNumber, method = 'email', emailOptions) {
41
- const documentId = documentSegment(documentNumber);
42
- // Update EmailInformation before sending if any email options are provided
43
- if (emailOptions && (emailOptions.subject || emailOptions.body || emailOptions.bcc)) {
44
- const current = await fortnoxRequest(`invoices/${documentId}`);
45
- const existing = current.Invoice?.EmailInformation || {};
46
- const emailInfo = { ...existing };
47
- if (emailOptions.subject)
48
- emailInfo.EmailSubject = emailOptions.subject;
49
- if (emailOptions.body)
50
- emailInfo.EmailBody = emailOptions.body;
51
- if (emailOptions.bcc)
52
- emailInfo.EmailAddressBCC = emailOptions.bcc;
53
- await fortnoxRequest(`invoices/${documentId}`, {
22
+ async function getInvoice(documentNumber) {
23
+ const data = await transport.request(`invoices/${documentSegment(documentNumber)}`);
24
+ return data.Invoice;
25
+ }
26
+ async function createInvoice(params) {
27
+ const data = await transport.request('invoices', {
28
+ method: 'POST',
29
+ body: { Invoice: params },
30
+ });
31
+ return data.Invoice;
32
+ }
33
+ async function updateInvoice(documentNumber, fields) {
34
+ const { documentNumber: _, ...body } = fields;
35
+ const data = await transport.request(`invoices/${documentSegment(documentNumber)}`, {
54
36
  method: 'PUT',
55
- body: { Invoice: { EmailInformation: emailInfo } },
37
+ body: { Invoice: body },
56
38
  });
39
+ return data.Invoice;
57
40
  }
58
- if (method === 'print') {
59
- return (await markInvoicePrinted(documentNumber)).invoice;
41
+ async function sendInvoice(documentNumber, method = 'email', emailOptions) {
42
+ const documentId = documentSegment(documentNumber);
43
+ // Update EmailInformation before sending if any email options are provided
44
+ if (emailOptions && (emailOptions.subject || emailOptions.body || emailOptions.bcc)) {
45
+ const current = await transport.request(`invoices/${documentId}`);
46
+ const existing = current.Invoice?.EmailInformation || {};
47
+ const emailInfo = { ...existing };
48
+ if (emailOptions.subject)
49
+ emailInfo.EmailSubject = emailOptions.subject;
50
+ if (emailOptions.body)
51
+ emailInfo.EmailBody = emailOptions.body;
52
+ if (emailOptions.bcc)
53
+ emailInfo.EmailAddressBCC = emailOptions.bcc;
54
+ await transport.request(`invoices/${documentId}`, {
55
+ method: 'PUT',
56
+ body: { Invoice: { EmailInformation: emailInfo } },
57
+ });
58
+ }
59
+ if (method === 'print') {
60
+ return (await markInvoicePrinted(documentNumber)).invoice;
61
+ }
62
+ // Exhaustive on purpose: no silent fallback. 'email' and 'einvoice' both send
63
+ // the invoice to the customer, so an unrecognised method must fail loudly
64
+ // rather than pick one of them.
65
+ if (method !== 'email' && method !== 'einvoice') {
66
+ throw new Error(`Unsupported send method: ${String(method)}`);
67
+ }
68
+ const data = await transport.request(`invoices/${documentId}/${method}`, {
69
+ // Fortnox models these delivery actions as GET, but they send an invoice
70
+ // to a customer. Never retry them automatically after an ambiguous error.
71
+ mutation: true,
72
+ });
73
+ return data?.Invoice || {};
60
74
  }
61
- // Exhaustive on purpose: no silent fallback. 'email' and 'einvoice' both send
62
- // the invoice to the customer, so an unrecognised method must fail loudly
63
- // rather than pick one of them.
64
- if (method !== 'email' && method !== 'einvoice') {
65
- throw new Error(`Unsupported send method: ${String(method)}`);
75
+ /**
76
+ * Fetch an invoice as a PDF. Always uses /preview, which returns the same
77
+ * document as /print but leaves the invoice untouched.
78
+ *
79
+ * Marking the invoice as sent is deliberately NOT folded in here: callers that
80
+ * want both run this first, write the bytes out, and only then call
81
+ * `markInvoicePrinted`. Doing it the other way round means a full disk or a bad
82
+ * path leaves an invoice flagged as sent with no PDF to show for it.
83
+ */
84
+ async function getInvoicePdf(documentNumber) {
85
+ return transport.requestPdf(`invoices/${documentSegment(documentNumber)}/preview`);
66
86
  }
67
- const data = await fortnoxRequest(`invoices/${documentId}/${method}`);
68
- return data?.Invoice || {};
69
- }
70
- /**
71
- * Fetch an invoice as a PDF. Always uses /preview, which returns the same
72
- * document as /print but leaves the invoice untouched.
73
- *
74
- * Marking the invoice as sent is deliberately NOT folded in here: callers that
75
- * want both run this first, write the bytes out, and only then call
76
- * `markInvoicePrinted`. Doing it the other way round means a full disk or a bad
77
- * path leaves an invoice flagged as sent with no PDF to show for it.
78
- */
79
- export async function getInvoicePdf(documentNumber) {
80
- return fortnoxRequestPdf(`invoices/${documentSegment(documentNumber)}/preview`);
81
- }
82
- /**
83
- * Mark an invoice as sent via Fortnox's /print action, and report its resulting
84
- * state. /print is a GET that changes data, so it is flagged as a mutation to
85
- * keep it out of the automatic retry path.
86
- *
87
- * Once the /print request succeeds the invoice has been changed, so from that
88
- * point on this function does not throw: neither a malformed PDF body nor a
89
- * failed read-back may turn a completed accounting change into a reported
90
- * failure.
91
- */
92
- export async function markInvoicePrinted(documentNumber) {
93
- const documentId = documentSegment(documentNumber);
94
- const pdf = await fortnoxRequestPdfFromMutation(`invoices/${documentId}/print`);
95
- try {
96
- return { invoice: await getInvoice(documentNumber), confirmed: true, pdf };
87
+ /**
88
+ * Mark an invoice as sent via Fortnox's /print action, and report its resulting
89
+ * state. /print is a GET that changes data, so it is flagged as a mutation to
90
+ * keep it out of the automatic retry path.
91
+ *
92
+ * Once the /print request succeeds the invoice has been changed, so from that
93
+ * point on this function does not throw: neither a malformed PDF body nor a
94
+ * failed read-back may turn a completed accounting change into a reported
95
+ * failure.
96
+ */
97
+ async function markInvoicePrinted(documentNumber) {
98
+ const documentId = documentSegment(documentNumber);
99
+ const pdf = await transport.requestPdfFromMutation(`invoices/${documentId}/print`);
100
+ try {
101
+ return { invoice: await getInvoice(documentNumber), confirmed: true, pdf };
102
+ }
103
+ catch (err) {
104
+ // Fortnox accepted the print request, so the change has most likely been
105
+ // applied but "most likely" is not "confirmed". Deliberately no
106
+ // `Sent: true` here: synthesizing it would present an unverified outcome as
107
+ // established fact about someone's accounting records.
108
+ return {
109
+ invoice: {
110
+ DocumentNumber: documentNumber,
111
+ Note: `Fortnox accepted the print request, but reading the invoice back failed, so its sent status could not be confirmed: ${err instanceof Error ? err.message : String(err)}`,
112
+ },
113
+ confirmed: false,
114
+ pdf,
115
+ };
116
+ }
97
117
  }
98
- catch (err) {
99
- // Fortnox accepted the print request, so the change has most likely been
100
- // applied — but "most likely" is not "confirmed". Deliberately no
101
- // `Sent: true` here: synthesizing it would present an unverified outcome as
102
- // established fact about someone's accounting records.
103
- return {
104
- invoice: {
105
- DocumentNumber: documentNumber,
106
- Note: `Fortnox accepted the print request, but reading the invoice back failed, so its sent status could not be confirmed: ${err instanceof Error ? err.message : String(err)}`,
107
- },
108
- confirmed: false,
109
- pdf,
110
- };
118
+ async function bookkeepInvoice(documentNumber) {
119
+ const data = await transport.request(`invoices/${documentSegment(documentNumber)}/bookkeep`, {
120
+ method: 'PUT',
121
+ });
122
+ return data?.Invoice || {};
111
123
  }
124
+ async function creditInvoice(documentNumber) {
125
+ const data = await transport.request(`invoices/${documentSegment(documentNumber)}/credit`, {
126
+ method: 'PUT',
127
+ });
128
+ return data?.Invoice || {};
129
+ }
130
+ return {
131
+ listInvoices,
132
+ getInvoice,
133
+ createInvoice,
134
+ updateInvoice,
135
+ sendInvoice,
136
+ getInvoicePdf,
137
+ markInvoicePrinted,
138
+ bookkeepInvoice,
139
+ creditInvoice,
140
+ };
112
141
  }
113
- export async function bookkeepInvoice(documentNumber) {
114
- const data = await fortnoxRequest(`invoices/${documentSegment(documentNumber)}/bookkeep`, {
115
- method: 'PUT',
116
- });
117
- return data?.Invoice || {};
118
- }
119
- export async function creditInvoice(documentNumber) {
120
- const data = await fortnoxRequest(`invoices/${documentSegment(documentNumber)}/credit`, {
121
- method: 'PUT',
122
- });
123
- return data?.Invoice || {};
124
- }
142
+ export const { listInvoices, getInvoice, createInvoice, updateInvoice, sendInvoice, getInvoicePdf, markInvoicePrinted, bookkeepInvoice, creditInvoice, } = createInvoiceOperations(defaultFortnoxTransport);
125
143
  //# sourceMappingURL=invoices.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invoices.js","sourceRoot":"","sources":["../../src/operations/invoices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invoices.js","sourceRoot":"","sources":["../../src/operations/invoices.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- interface OffersResponse {
1
+ import { type FortnoxTransport } from '../fortnox-client.js';
2
+ export interface OffersResponse {
2
3
  Offers: Record<string, unknown>[];
3
4
  MetaInformation?: {
4
5
  '@TotalResources': number;
@@ -15,11 +16,13 @@ export interface ListOffersParams {
15
16
  limit?: number;
16
17
  all?: boolean;
17
18
  }
18
- export declare function listOffers(params?: ListOffersParams): Promise<OffersResponse>;
19
- export declare function getOffer(documentNumber: string): Promise<Record<string, unknown>>;
20
- export declare function createOffer(params: Record<string, unknown>): Promise<Record<string, unknown>>;
21
- export declare function updateOffer(documentNumber: string, fields: Record<string, unknown>): Promise<Record<string, unknown>>;
22
- export declare function createInvoiceFromOffer(documentNumber: string): Promise<Record<string, unknown>>;
23
- export declare function createOrderFromOffer(documentNumber: string): Promise<Record<string, unknown>>;
24
- export {};
19
+ export declare function createOfferOperations(transport: FortnoxTransport): {
20
+ listOffers: (params?: ListOffersParams) => Promise<OffersResponse>;
21
+ getOffer: (documentNumber: string) => Promise<Record<string, unknown>>;
22
+ createOffer: (params: Record<string, unknown>) => Promise<Record<string, unknown>>;
23
+ updateOffer: (documentNumber: string, fields: Record<string, unknown>) => Promise<Record<string, unknown>>;
24
+ createInvoiceFromOffer: (documentNumber: string) => Promise<Record<string, unknown>>;
25
+ createOrderFromOffer: (documentNumber: string) => Promise<Record<string, unknown>>;
26
+ };
27
+ export declare const listOffers: (params?: ListOffersParams) => Promise<OffersResponse>, getOffer: (documentNumber: string) => Promise<Record<string, unknown>>, createOffer: (params: Record<string, unknown>) => Promise<Record<string, unknown>>, updateOffer: (documentNumber: string, fields: Record<string, unknown>) => Promise<Record<string, unknown>>, createInvoiceFromOffer: (documentNumber: string) => Promise<Record<string, unknown>>, createOrderFromOffer: (documentNumber: string) => Promise<Record<string, unknown>>;
25
28
  //# sourceMappingURL=offers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"offers.d.ts","sourceRoot":"","sources":["../../src/operations/offers.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CAChG;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,UAAU,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAuBvF;AAED,wBAAsB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAGvF;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMlC;AAED,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAOlC;AAED,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMlC;AAED,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMlC"}
1
+ {"version":3,"file":"offers.d.ts","sourceRoot":"","sources":["../../src/operations/offers.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOtF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CAChG;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,gBAAgB;0BAC7B,gBAAgB,KAAQ,OAAO,CAAC,cAAc,CAAC;+BAyBzC,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;0BAO9C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;kCAS3E,MAAM,UACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;6CAYmB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;2CAQ3C,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EAgB9F;AAED,eAAO,MACL,UAAU,YAlFwB,gBAAgB,KAAQ,OAAO,CAAC,cAAc,CAAC,EAmFjF,QAAQ,mBA1DgC,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EA2DjF,WAAW,WApDwB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAqD7F,WAAW,mBA5CO,MAAM,UACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EA2CnC,sBAAsB,mBA/BgC,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAgC/F,oBAAoB,mBAxBgC,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyB5C,CAAC"}
@@ -1,48 +1,59 @@
1
- import { fortnoxRequest, fetchAllPages } from '../fortnox-client.js';
1
+ import { defaultFortnoxTransport } from '../fortnox-client.js';
2
2
  import { documentSegment } from '../identifiers.js';
3
- export async function listOffers(params = {}) {
4
- const queryParams = {
5
- filter: params.filter,
6
- customernumber: params.customerNumber,
7
- fromdate: params.fromDate,
8
- todate: params.toDate,
9
- };
10
- if (params.all) {
11
- const { items, totalResources } = await fetchAllPages('offers', 'Offers', queryParams);
12
- return {
13
- Offers: items,
14
- MetaInformation: { '@TotalResources': totalResources, '@TotalPages': 1, '@CurrentPage': 1 },
3
+ export function createOfferOperations(transport) {
4
+ async function listOffers(params = {}) {
5
+ const queryParams = {
6
+ filter: params.filter,
7
+ customernumber: params.customerNumber,
8
+ fromdate: params.fromDate,
9
+ todate: params.toDate,
15
10
  };
11
+ if (params.all) {
12
+ const { items, totalResources } = await transport.fetchAllPages('offers', 'Offers', queryParams);
13
+ return {
14
+ Offers: items,
15
+ MetaInformation: { '@TotalResources': totalResources, '@TotalPages': 1, '@CurrentPage': 1 },
16
+ };
17
+ }
18
+ return transport.request('offers', {
19
+ params: { ...queryParams, page: params.page || 1, limit: params.limit || 100 },
20
+ });
16
21
  }
17
- return fortnoxRequest('offers', {
18
- params: { ...queryParams, page: params.page || 1, limit: params.limit || 100 },
19
- });
20
- }
21
- export async function getOffer(documentNumber) {
22
- const data = await fortnoxRequest(`offers/${documentSegment(documentNumber)}`);
23
- return data.Offer;
24
- }
25
- export async function createOffer(params) {
26
- const data = await fortnoxRequest('offers', {
27
- method: 'POST',
28
- body: { Offer: params },
29
- });
30
- return data.Offer;
31
- }
32
- export async function updateOffer(documentNumber, fields) {
33
- const { documentNumber: _, ...body } = fields;
34
- const data = await fortnoxRequest(`offers/${documentSegment(documentNumber)}`, {
35
- method: 'PUT',
36
- body: { Offer: body },
37
- });
38
- return data.Offer;
39
- }
40
- export async function createInvoiceFromOffer(documentNumber) {
41
- const data = await fortnoxRequest(`offers/${documentSegment(documentNumber)}/createinvoice`, { method: 'PUT' });
42
- return data.Invoice;
43
- }
44
- export async function createOrderFromOffer(documentNumber) {
45
- const data = await fortnoxRequest(`offers/${documentSegment(documentNumber)}/createorder`, { method: 'PUT' });
46
- return data.Order;
22
+ async function getOffer(documentNumber) {
23
+ const data = await transport.request(`offers/${documentSegment(documentNumber)}`);
24
+ return data.Offer;
25
+ }
26
+ async function createOffer(params) {
27
+ const data = await transport.request('offers', {
28
+ method: 'POST',
29
+ body: { Offer: params },
30
+ });
31
+ return data.Offer;
32
+ }
33
+ async function updateOffer(documentNumber, fields) {
34
+ const { documentNumber: _, ...body } = fields;
35
+ const data = await transport.request(`offers/${documentSegment(documentNumber)}`, {
36
+ method: 'PUT',
37
+ body: { Offer: body },
38
+ });
39
+ return data.Offer;
40
+ }
41
+ async function createInvoiceFromOffer(documentNumber) {
42
+ const data = await transport.request(`offers/${documentSegment(documentNumber)}/createinvoice`, { method: 'PUT' });
43
+ return data.Invoice;
44
+ }
45
+ async function createOrderFromOffer(documentNumber) {
46
+ const data = await transport.request(`offers/${documentSegment(documentNumber)}/createorder`, { method: 'PUT' });
47
+ return data.Order;
48
+ }
49
+ return {
50
+ listOffers,
51
+ getOffer,
52
+ createOffer,
53
+ updateOffer,
54
+ createInvoiceFromOffer,
55
+ createOrderFromOffer,
56
+ };
47
57
  }
58
+ export const { listOffers, getOffer, createOffer, updateOffer, createInvoiceFromOffer, createOrderFromOffer, } = createOfferOperations(defaultFortnoxTransport);
48
59
  //# sourceMappingURL=offers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"offers.js","sourceRoot":"","sources":["../../src/operations/offers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAqBpD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAA2B,EAAE;IAC5D,MAAM,WAAW,GAAgD;QAC/D,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;IAEF,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,aAAa,CACnD,QAAQ,EACR,QAAQ,EACR,WAAW,CACZ,CAAC;QACF,OAAO;YACL,MAAM,EAAE,KAAK;YACb,eAAe,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE;SAC5F,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAiB,QAAQ,EAAE;QAC9C,MAAM,EAAE,EAAE,GAAG,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE;KAC/E,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,cAAsB;IACnD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAgB,UAAU,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC9F,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAA+B;IAE/B,MAAM,IAAI,GAAG,MAAM,cAAc,CAAgB,QAAQ,EAAE;QACzD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;KACxB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,cAAsB,EACtB,MAA+B;IAE/B,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,cAAc,CAAgB,UAAU,eAAe,CAAC,cAAc,CAAC,EAAE,EAAE;QAC5F,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;KACtB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,cAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,cAAc,CAC/B,UAAU,eAAe,CAAC,cAAc,CAAC,gBAAgB,EACzD,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;IACF,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,cAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,cAAc,CAC/B,UAAU,eAAe,CAAC,cAAc,CAAC,cAAc,EACvD,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;IACF,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"offers.js","sourceRoot":"","sources":["../../src/operations/offers.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- interface OrdersResponse {
1
+ import { type FortnoxTransport } from '../fortnox-client.js';
2
+ export interface OrdersResponse {
2
3
  Orders: Record<string, unknown>[];
3
4
  MetaInformation?: {
4
5
  '@TotalResources': number;
@@ -15,10 +16,12 @@ export interface ListOrdersParams {
15
16
  limit?: number;
16
17
  all?: boolean;
17
18
  }
18
- export declare function listOrders(params?: ListOrdersParams): Promise<OrdersResponse>;
19
- export declare function getOrder(documentNumber: string): Promise<Record<string, unknown>>;
20
- export declare function createOrder(params: Record<string, unknown>): Promise<Record<string, unknown>>;
21
- export declare function updateOrder(documentNumber: string, fields: Record<string, unknown>): Promise<Record<string, unknown>>;
22
- export declare function createInvoiceFromOrder(documentNumber: string): Promise<Record<string, unknown>>;
23
- export {};
19
+ export declare function createOrderOperations(transport: FortnoxTransport): {
20
+ listOrders: (params?: ListOrdersParams) => Promise<OrdersResponse>;
21
+ getOrder: (documentNumber: string) => Promise<Record<string, unknown>>;
22
+ createOrder: (params: Record<string, unknown>) => Promise<Record<string, unknown>>;
23
+ updateOrder: (documentNumber: string, fields: Record<string, unknown>) => Promise<Record<string, unknown>>;
24
+ createInvoiceFromOrder: (documentNumber: string) => Promise<Record<string, unknown>>;
25
+ };
26
+ export declare const listOrders: (params?: ListOrdersParams) => Promise<OrdersResponse>, getOrder: (documentNumber: string) => Promise<Record<string, unknown>>, createOrder: (params: Record<string, unknown>) => Promise<Record<string, unknown>>, updateOrder: (documentNumber: string, fields: Record<string, unknown>) => Promise<Record<string, unknown>>, createInvoiceFromOrder: (documentNumber: string) => Promise<Record<string, unknown>>;
24
27
  //# sourceMappingURL=orders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../src/operations/orders.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CAChG;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,UAAU,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAuBvF;AAED,wBAAsB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAGvF;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMlC;AAED,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAOlC;AAED,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMlC"}
1
+ {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../src/operations/orders.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOtF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CAChG;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,gBAAgB;0BAC7B,gBAAgB,KAAQ,OAAO,CAAC,cAAc,CAAC;+BAyBzC,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;0BAO9C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;kCAS3E,MAAM,UACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;6CAYmB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EAShG;AAED,eAAO,MAAQ,UAAU,YAlEW,gBAAgB,KAAQ,OAAO,CAAC,cAAc,CAAC,EAkExD,QAAQ,mBAzCO,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAyC9C,WAAW,WAlCX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAkC7C,WAAW,mBAzBzC,MAAM,UACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAuB0B,sBAAsB,mBAX7B,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYhD,CAAC"}
@@ -1,44 +1,48 @@
1
- import { fortnoxRequest, fetchAllPages } from '../fortnox-client.js';
1
+ import { defaultFortnoxTransport } from '../fortnox-client.js';
2
2
  import { documentSegment } from '../identifiers.js';
3
- export async function listOrders(params = {}) {
4
- const queryParams = {
5
- filter: params.filter,
6
- customernumber: params.customerNumber,
7
- fromdate: params.fromDate,
8
- todate: params.toDate,
9
- };
10
- if (params.all) {
11
- const { items, totalResources } = await fetchAllPages('orders', 'Orders', queryParams);
12
- return {
13
- Orders: items,
14
- MetaInformation: { '@TotalResources': totalResources, '@TotalPages': 1, '@CurrentPage': 1 },
3
+ export function createOrderOperations(transport) {
4
+ async function listOrders(params = {}) {
5
+ const queryParams = {
6
+ filter: params.filter,
7
+ customernumber: params.customerNumber,
8
+ fromdate: params.fromDate,
9
+ todate: params.toDate,
15
10
  };
11
+ if (params.all) {
12
+ const { items, totalResources } = await transport.fetchAllPages('orders', 'Orders', queryParams);
13
+ return {
14
+ Orders: items,
15
+ MetaInformation: { '@TotalResources': totalResources, '@TotalPages': 1, '@CurrentPage': 1 },
16
+ };
17
+ }
18
+ return transport.request('orders', {
19
+ params: { ...queryParams, page: params.page || 1, limit: params.limit || 100 },
20
+ });
16
21
  }
17
- return fortnoxRequest('orders', {
18
- params: { ...queryParams, page: params.page || 1, limit: params.limit || 100 },
19
- });
20
- }
21
- export async function getOrder(documentNumber) {
22
- const data = await fortnoxRequest(`orders/${documentSegment(documentNumber)}`);
23
- return data.Order;
24
- }
25
- export async function createOrder(params) {
26
- const data = await fortnoxRequest('orders', {
27
- method: 'POST',
28
- body: { Order: params },
29
- });
30
- return data.Order;
31
- }
32
- export async function updateOrder(documentNumber, fields) {
33
- const { documentNumber: _, ...body } = fields;
34
- const data = await fortnoxRequest(`orders/${documentSegment(documentNumber)}`, {
35
- method: 'PUT',
36
- body: { Order: body },
37
- });
38
- return data.Order;
39
- }
40
- export async function createInvoiceFromOrder(documentNumber) {
41
- const data = await fortnoxRequest(`orders/${documentSegment(documentNumber)}/createinvoice`, { method: 'PUT' });
42
- return data.Invoice;
22
+ async function getOrder(documentNumber) {
23
+ const data = await transport.request(`orders/${documentSegment(documentNumber)}`);
24
+ return data.Order;
25
+ }
26
+ async function createOrder(params) {
27
+ const data = await transport.request('orders', {
28
+ method: 'POST',
29
+ body: { Order: params },
30
+ });
31
+ return data.Order;
32
+ }
33
+ async function updateOrder(documentNumber, fields) {
34
+ const { documentNumber: _, ...body } = fields;
35
+ const data = await transport.request(`orders/${documentSegment(documentNumber)}`, {
36
+ method: 'PUT',
37
+ body: { Order: body },
38
+ });
39
+ return data.Order;
40
+ }
41
+ async function createInvoiceFromOrder(documentNumber) {
42
+ const data = await transport.request(`orders/${documentSegment(documentNumber)}/createinvoice`, { method: 'PUT' });
43
+ return data.Invoice;
44
+ }
45
+ return { listOrders, getOrder, createOrder, updateOrder, createInvoiceFromOrder };
43
46
  }
47
+ export const { listOrders, getOrder, createOrder, updateOrder, createInvoiceFromOrder } = createOrderOperations(defaultFortnoxTransport);
44
48
  //# sourceMappingURL=orders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"orders.js","sourceRoot":"","sources":["../../src/operations/orders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAqBpD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAA2B,EAAE;IAC5D,MAAM,WAAW,GAAgD;QAC/D,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;IAEF,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,aAAa,CACnD,QAAQ,EACR,QAAQ,EACR,WAAW,CACZ,CAAC;QACF,OAAO;YACL,MAAM,EAAE,KAAK;YACb,eAAe,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE;SAC5F,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAiB,QAAQ,EAAE;QAC9C,MAAM,EAAE,EAAE,GAAG,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE;KAC/E,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,cAAsB;IACnD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAgB,UAAU,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC9F,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAA+B;IAE/B,MAAM,IAAI,GAAG,MAAM,cAAc,CAAgB,QAAQ,EAAE;QACzD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;KACxB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,cAAsB,EACtB,MAA+B;IAE/B,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,cAAc,CAAgB,UAAU,eAAe,CAAC,cAAc,CAAC,EAAE,EAAE;QAC5F,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;KACtB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,cAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,cAAc,CAC/B,UAAU,eAAe,CAAC,cAAc,CAAC,gBAAgB,EACzD,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;IACF,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"orders.js","sourceRoot":"","sources":["../../src/operations/orders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAyB,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAqBpD,MAAM,UAAU,qBAAqB,CAAC,SAA2B;IAC/D,KAAK,UAAU,UAAU,CAAC,SAA2B,EAAE;QACrD,MAAM,WAAW,GAAgD;YAC/D,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;QAEF,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACf,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,SAAS,CAAC,aAAa,CAC7D,QAAQ,EACR,QAAQ,EACR,WAAW,CACZ,CAAC;YACF,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,eAAe,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE;aAC5F,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC,OAAO,CAAiB,QAAQ,EAAE;YACjD,MAAM,EAAE,EAAE,GAAG,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE;SAC/E,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,cAAsB;QAC5C,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAClC,UAAU,eAAe,CAAC,cAAc,CAAC,EAAE,CAC5C,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,UAAU,WAAW,CAAC,MAA+B;QACxD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAgB,QAAQ,EAAE;YAC5D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;SACxB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,UAAU,WAAW,CACxB,cAAsB,EACtB,MAA+B;QAE/B,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAClC,UAAU,eAAe,CAAC,cAAc,CAAC,EAAE,EAC3C;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACtB,CACF,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,UAAU,sBAAsB,CAAC,cAAsB;QAC1D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAClC,UAAU,eAAe,CAAC,cAAc,CAAC,gBAAgB,EACzD,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,EAAE,GACrF,qBAAqB,CAAC,uBAAuB,CAAC,CAAC"}