storno-cli 1.0.5

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 (188) hide show
  1. package/LICENSE +53 -0
  2. package/README.md +257 -0
  3. package/TOOLS.md +3309 -0
  4. package/dist/client.d.ts +42 -0
  5. package/dist/client.d.ts.map +1 -0
  6. package/dist/client.js +162 -0
  7. package/dist/client.js.map +1 -0
  8. package/dist/config.d.ts +22 -0
  9. package/dist/config.d.ts.map +1 -0
  10. package/dist/config.js +30 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/index.d.ts +37 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +172 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/tools/accounting-export.d.ts +14 -0
  17. package/dist/tools/accounting-export.d.ts.map +1 -0
  18. package/dist/tools/accounting-export.js +97 -0
  19. package/dist/tools/accounting-export.js.map +1 -0
  20. package/dist/tools/admin.d.ts +8 -0
  21. package/dist/tools/admin.d.ts.map +1 -0
  22. package/dist/tools/admin.js +98 -0
  23. package/dist/tools/admin.js.map +1 -0
  24. package/dist/tools/anaf.d.ts +8 -0
  25. package/dist/tools/anaf.d.ts.map +1 -0
  26. package/dist/tools/anaf.js +115 -0
  27. package/dist/tools/anaf.js.map +1 -0
  28. package/dist/tools/api-keys.d.ts +8 -0
  29. package/dist/tools/api-keys.d.ts.map +1 -0
  30. package/dist/tools/api-keys.js +29 -0
  31. package/dist/tools/api-keys.js.map +1 -0
  32. package/dist/tools/auth.d.ts +8 -0
  33. package/dist/tools/auth.d.ts.map +1 -0
  34. package/dist/tools/auth.js +187 -0
  35. package/dist/tools/auth.js.map +1 -0
  36. package/dist/tools/backup.d.ts +62 -0
  37. package/dist/tools/backup.d.ts.map +1 -0
  38. package/dist/tools/backup.js +167 -0
  39. package/dist/tools/backup.js.map +1 -0
  40. package/dist/tools/bank-accounts.d.ts +14 -0
  41. package/dist/tools/bank-accounts.d.ts.map +1 -0
  42. package/dist/tools/bank-accounts.js +140 -0
  43. package/dist/tools/bank-accounts.js.map +1 -0
  44. package/dist/tools/borderou.d.ts +14 -0
  45. package/dist/tools/borderou.d.ts.map +1 -0
  46. package/dist/tools/borderou.js +233 -0
  47. package/dist/tools/borderou.js.map +1 -0
  48. package/dist/tools/clients.d.ts +14 -0
  49. package/dist/tools/clients.d.ts.map +1 -0
  50. package/dist/tools/clients.js +353 -0
  51. package/dist/tools/clients.js.map +1 -0
  52. package/dist/tools/companies.d.ts +8 -0
  53. package/dist/tools/companies.d.ts.map +1 -0
  54. package/dist/tools/companies.js +211 -0
  55. package/dist/tools/companies.js.map +1 -0
  56. package/dist/tools/company-registry.d.ts +31 -0
  57. package/dist/tools/company-registry.d.ts.map +1 -0
  58. package/dist/tools/company-registry.js +51 -0
  59. package/dist/tools/company-registry.js.map +1 -0
  60. package/dist/tools/cpv-codes.d.ts +17 -0
  61. package/dist/tools/cpv-codes.d.ts.map +1 -0
  62. package/dist/tools/cpv-codes.js +28 -0
  63. package/dist/tools/cpv-codes.js.map +1 -0
  64. package/dist/tools/dashboard.d.ts +23 -0
  65. package/dist/tools/dashboard.d.ts.map +1 -0
  66. package/dist/tools/dashboard.js +37 -0
  67. package/dist/tools/dashboard.js.map +1 -0
  68. package/dist/tools/defaults.d.ts +14 -0
  69. package/dist/tools/defaults.d.ts.map +1 -0
  70. package/dist/tools/defaults.js +29 -0
  71. package/dist/tools/defaults.js.map +1 -0
  72. package/dist/tools/delivery-notes.d.ts +185 -0
  73. package/dist/tools/delivery-notes.d.ts.map +1 -0
  74. package/dist/tools/delivery-notes.js +525 -0
  75. package/dist/tools/delivery-notes.js.map +1 -0
  76. package/dist/tools/document-series.d.ts +54 -0
  77. package/dist/tools/document-series.d.ts.map +1 -0
  78. package/dist/tools/document-series.js +171 -0
  79. package/dist/tools/document-series.js.map +1 -0
  80. package/dist/tools/efactura-messages.d.ts +34 -0
  81. package/dist/tools/efactura-messages.d.ts.map +1 -0
  82. package/dist/tools/efactura-messages.js +51 -0
  83. package/dist/tools/efactura-messages.js.map +1 -0
  84. package/dist/tools/einvoice.d.ts +8 -0
  85. package/dist/tools/einvoice.d.ts.map +1 -0
  86. package/dist/tools/einvoice.js +170 -0
  87. package/dist/tools/einvoice.js.map +1 -0
  88. package/dist/tools/email-templates.d.ts +14 -0
  89. package/dist/tools/email-templates.d.ts.map +1 -0
  90. package/dist/tools/email-templates.js +104 -0
  91. package/dist/tools/email-templates.js.map +1 -0
  92. package/dist/tools/exchange-rates.d.ts +14 -0
  93. package/dist/tools/exchange-rates.d.ts.map +1 -0
  94. package/dist/tools/exchange-rates.js +55 -0
  95. package/dist/tools/exchange-rates.js.map +1 -0
  96. package/dist/tools/exports.d.ts +14 -0
  97. package/dist/tools/exports.d.ts.map +1 -0
  98. package/dist/tools/exports.js +25 -0
  99. package/dist/tools/exports.js.map +1 -0
  100. package/dist/tools/import.d.ts +14 -0
  101. package/dist/tools/import.d.ts.map +1 -0
  102. package/dist/tools/import.js +221 -0
  103. package/dist/tools/import.js.map +1 -0
  104. package/dist/tools/invitations.d.ts +8 -0
  105. package/dist/tools/invitations.d.ts.map +1 -0
  106. package/dist/tools/invitations.js +70 -0
  107. package/dist/tools/invitations.js.map +1 -0
  108. package/dist/tools/invoices.d.ts +14 -0
  109. package/dist/tools/invoices.d.ts.map +1 -0
  110. package/dist/tools/invoices.js +1191 -0
  111. package/dist/tools/invoices.js.map +1 -0
  112. package/dist/tools/licensing.d.ts +8 -0
  113. package/dist/tools/licensing.d.ts.map +1 -0
  114. package/dist/tools/licensing.js +90 -0
  115. package/dist/tools/licensing.js.map +1 -0
  116. package/dist/tools/members.d.ts +8 -0
  117. package/dist/tools/members.d.ts.map +1 -0
  118. package/dist/tools/members.js +79 -0
  119. package/dist/tools/members.js.map +1 -0
  120. package/dist/tools/nc-codes.d.ts +17 -0
  121. package/dist/tools/nc-codes.d.ts.map +1 -0
  122. package/dist/tools/nc-codes.js +28 -0
  123. package/dist/tools/nc-codes.js.map +1 -0
  124. package/dist/tools/notifications.d.ts +8 -0
  125. package/dist/tools/notifications.d.ts.map +1 -0
  126. package/dist/tools/notifications.js +111 -0
  127. package/dist/tools/notifications.js.map +1 -0
  128. package/dist/tools/oauth2-clients.d.ts +8 -0
  129. package/dist/tools/oauth2-clients.d.ts.map +1 -0
  130. package/dist/tools/oauth2-clients.js +147 -0
  131. package/dist/tools/oauth2-clients.js.map +1 -0
  132. package/dist/tools/payments.d.ts +17 -0
  133. package/dist/tools/payments.d.ts.map +1 -0
  134. package/dist/tools/payments.js +109 -0
  135. package/dist/tools/payments.js.map +1 -0
  136. package/dist/tools/pdf-template-config.d.ts +14 -0
  137. package/dist/tools/pdf-template-config.d.ts.map +1 -0
  138. package/dist/tools/pdf-template-config.js +131 -0
  139. package/dist/tools/pdf-template-config.js.map +1 -0
  140. package/dist/tools/products.d.ts +40 -0
  141. package/dist/tools/products.d.ts.map +1 -0
  142. package/dist/tools/products.js +73 -0
  143. package/dist/tools/products.js.map +1 -0
  144. package/dist/tools/proforma-invoices.d.ts +198 -0
  145. package/dist/tools/proforma-invoices.d.ts.map +1 -0
  146. package/dist/tools/proforma-invoices.js +378 -0
  147. package/dist/tools/proforma-invoices.js.map +1 -0
  148. package/dist/tools/receipts.d.ts +166 -0
  149. package/dist/tools/receipts.d.ts.map +1 -0
  150. package/dist/tools/receipts.js +397 -0
  151. package/dist/tools/receipts.js.map +1 -0
  152. package/dist/tools/recurring-invoices.d.ts +187 -0
  153. package/dist/tools/recurring-invoices.d.ts.map +1 -0
  154. package/dist/tools/recurring-invoices.js +305 -0
  155. package/dist/tools/recurring-invoices.js.map +1 -0
  156. package/dist/tools/reports.d.ts +48 -0
  157. package/dist/tools/reports.d.ts.map +1 -0
  158. package/dist/tools/reports.js +200 -0
  159. package/dist/tools/reports.js.map +1 -0
  160. package/dist/tools/storage-config.d.ts +8 -0
  161. package/dist/tools/storage-config.d.ts.map +1 -0
  162. package/dist/tools/storage-config.js +117 -0
  163. package/dist/tools/storage-config.js.map +1 -0
  164. package/dist/tools/suppliers.d.ts +14 -0
  165. package/dist/tools/suppliers.d.ts.map +1 -0
  166. package/dist/tools/suppliers.js +205 -0
  167. package/dist/tools/suppliers.js.map +1 -0
  168. package/dist/tools/system.d.ts +8 -0
  169. package/dist/tools/system.d.ts.map +1 -0
  170. package/dist/tools/system.js +24 -0
  171. package/dist/tools/system.js.map +1 -0
  172. package/dist/tools/vat-rates.d.ts +14 -0
  173. package/dist/tools/vat-rates.d.ts.map +1 -0
  174. package/dist/tools/vat-rates.js +145 -0
  175. package/dist/tools/vat-rates.js.map +1 -0
  176. package/dist/tools/webhooks.d.ts +8 -0
  177. package/dist/tools/webhooks.d.ts.map +1 -0
  178. package/dist/tools/webhooks.js +305 -0
  179. package/dist/tools/webhooks.js.map +1 -0
  180. package/dist/utils/errors.d.ts +18 -0
  181. package/dist/utils/errors.d.ts.map +1 -0
  182. package/dist/utils/errors.js +45 -0
  183. package/dist/utils/errors.js.map +1 -0
  184. package/dist/utils/pagination.d.ts +9 -0
  185. package/dist/utils/pagination.d.ts.map +1 -0
  186. package/dist/utils/pagination.js +10 -0
  187. package/dist/utils/pagination.js.map +1 -0
  188. package/package.json +52 -0
@@ -0,0 +1,305 @@
1
+ import { z } from 'zod';
2
+ import { apiRequest } from '../client.js';
3
+ import { formatResponse, notAuthenticated, noCompanySelected } from '../utils/errors.js';
4
+ import { getConfig } from '../config.js';
5
+ const recurringLineItemSchema = z.object({
6
+ description: z.string().describe('Line item description'),
7
+ quantity: z.number().describe('Quantity (must be > 0)'),
8
+ unitPrice: z.number().describe('Price per unit'),
9
+ vatRateId: z.string().describe('UUID of the VAT rate'),
10
+ unitOfMeasure: z.string().optional().describe('Unit of measure code (default: "buc")'),
11
+ productId: z.string().optional().describe('UUID of linked product'),
12
+ priceRule: z
13
+ .enum(['fixed', 'exchange_rate', 'markup'])
14
+ .optional()
15
+ .describe('Pricing rule: fixed (default), exchange_rate, or markup'),
16
+ referenceCurrency: z.string().optional().describe('Reference currency (required if priceRule is exchange_rate)'),
17
+ markupPercent: z.number().optional().describe('Markup percentage (required if priceRule is markup)'),
18
+ });
19
+ export const tools = [
20
+ {
21
+ name: 'recurring_invoices_list',
22
+ description: 'List recurring invoice templates for the selected company. Supports filtering by active status and frequency.',
23
+ inputSchema: z.object({
24
+ companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
25
+ page: z.number().optional().describe('Page number (default: 1)'),
26
+ limit: z.number().optional().describe('Items per page (default: 20, max: 100)'),
27
+ search: z.string().optional().describe('Search term to filter by reference or notes'),
28
+ isActive: z.boolean().optional().describe('Filter by active status (true/false)'),
29
+ frequency: z
30
+ .enum(['weekly', 'biweekly', 'monthly', 'bimonthly', 'quarterly', 'semiannual', 'annual'])
31
+ .optional()
32
+ .describe('Filter by generation frequency'),
33
+ }),
34
+ handler: async (params) => {
35
+ const config = getConfig();
36
+ if (!config.token)
37
+ return notAuthenticated();
38
+ const companyId = params.companyId || config.companyId;
39
+ if (!companyId)
40
+ return noCompanySelected();
41
+ const res = await apiRequest('/api/v1/recurring-invoices', {
42
+ companyId,
43
+ query: {
44
+ page: params.page,
45
+ limit: params.limit,
46
+ search: params.search,
47
+ isActive: params.isActive,
48
+ frequency: params.frequency,
49
+ },
50
+ });
51
+ return formatResponse(res);
52
+ },
53
+ },
54
+ {
55
+ name: 'recurring_invoices_get',
56
+ description: 'Get detailed information about a specific recurring invoice template including all line items used as a template for generated invoices.',
57
+ inputSchema: z.object({
58
+ uuid: z.string().describe('UUID of the recurring invoice template'),
59
+ companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
60
+ }),
61
+ handler: async (params) => {
62
+ const config = getConfig();
63
+ if (!config.token)
64
+ return notAuthenticated();
65
+ const companyId = params.companyId || config.companyId;
66
+ if (!companyId)
67
+ return noCompanySelected();
68
+ const res = await apiRequest(`/api/v1/recurring-invoices/${params.uuid}`, { companyId });
69
+ return formatResponse(res);
70
+ },
71
+ },
72
+ {
73
+ name: 'recurring_invoices_create',
74
+ description: 'Create a new recurring invoice template. The system will automatically generate invoices based on the specified frequency and schedule. Supports fixed, exchange_rate, and markup pricing rules on line items.',
75
+ inputSchema: z.object({
76
+ companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
77
+ clientId: z.string().describe('UUID of the client'),
78
+ seriesId: z.string().describe('UUID of the document series'),
79
+ reference: z.string().optional().describe('Human-readable reference for this recurring invoice'),
80
+ documentType: z.enum(['invoice', 'credit_note']).describe('Document type to generate'),
81
+ currency: z.string().describe('ISO 4217 currency code (e.g., RON, EUR)'),
82
+ invoiceTypeCode: z.string().describe('e-Factura invoice type code (e.g., "380")'),
83
+ frequency: z
84
+ .enum(['weekly', 'biweekly', 'monthly', 'bimonthly', 'quarterly', 'semiannual', 'annual'])
85
+ .describe('How often to generate invoices'),
86
+ frequencyDay: z.number().describe('Day of month for generation (1-31)'),
87
+ frequencyMonth: z.number().optional().describe('Month for annual generation (1-12, required if frequency is annual)'),
88
+ nextIssuanceDate: z.string().describe('ISO 8601 date for the first invoice generation (YYYY-MM-DD)'),
89
+ stopDate: z.string().optional().describe('ISO 8601 date to stop generation (YYYY-MM-DD)'),
90
+ dueDateType: z.enum(['fixed', 'relative']).describe('How due date is calculated'),
91
+ dueDateDays: z
92
+ .number()
93
+ .optional()
94
+ .describe('Days after issue date for due date (required if dueDateType is relative)'),
95
+ dueDateFixedDay: z
96
+ .number()
97
+ .optional()
98
+ .describe('Fixed day of month for due date (1-31, required if dueDateType is fixed)'),
99
+ notes: z.string().optional().describe('Internal notes'),
100
+ paymentTerms: z.string().optional().describe('Payment terms text'),
101
+ autoEmailEnabled: z.boolean().optional().describe('Auto-send email on invoice generation (default: false)'),
102
+ autoEmailTime: z.string().optional().describe('Time to send email (HH:mm, default: "09:00")'),
103
+ autoEmailDayOffset: z.number().optional().describe('Days offset for email sending (default: 0)'),
104
+ penaltyEnabled: z.boolean().optional().describe('Enable late payment penalties (default: false)'),
105
+ penaltyPercentPerDay: z.number().optional().describe('Daily penalty percentage'),
106
+ penaltyGraceDays: z.number().optional().describe('Grace period in days before penalties apply'),
107
+ lines: z.array(recurringLineItemSchema).describe('Array of line items (minimum 1 required)'),
108
+ }),
109
+ handler: async (params) => {
110
+ const config = getConfig();
111
+ if (!config.token)
112
+ return notAuthenticated();
113
+ const companyId = params.companyId || config.companyId;
114
+ if (!companyId)
115
+ return noCompanySelected();
116
+ const { companyId: _cid, ...body } = params;
117
+ const res = await apiRequest('/api/v1/recurring-invoices', {
118
+ method: 'POST',
119
+ companyId,
120
+ body: body,
121
+ });
122
+ return formatResponse(res);
123
+ },
124
+ },
125
+ {
126
+ name: 'recurring_invoices_update',
127
+ description: 'Update an existing recurring invoice template. All fields are optional but at least one must be provided. When updating lines, the entire lines array replaces existing lines.',
128
+ inputSchema: z.object({
129
+ uuid: z.string().describe('UUID of the recurring invoice template to update'),
130
+ companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
131
+ clientId: z.string().optional().describe('UUID of the client'),
132
+ seriesId: z.string().optional().describe('UUID of the document series'),
133
+ reference: z.string().optional().describe('Human-readable reference'),
134
+ documentType: z.enum(['invoice', 'credit_note']).optional().describe('Document type to generate'),
135
+ currency: z.string().optional().describe('ISO 4217 currency code'),
136
+ invoiceTypeCode: z.string().optional().describe('e-Factura invoice type code'),
137
+ frequency: z
138
+ .enum(['weekly', 'biweekly', 'monthly', 'bimonthly', 'quarterly', 'semiannual', 'annual'])
139
+ .optional()
140
+ .describe('How often to generate invoices'),
141
+ frequencyDay: z.number().optional().describe('Day of month for generation (1-31)'),
142
+ frequencyMonth: z.number().optional().describe('Month for annual generation (1-12)'),
143
+ nextIssuanceDate: z.string().optional().describe('ISO 8601 date for next invoice generation (YYYY-MM-DD)'),
144
+ stopDate: z.string().nullable().optional().describe('ISO 8601 date to stop generation (null to remove)'),
145
+ dueDateType: z.enum(['fixed', 'relative']).optional().describe('How due date is calculated'),
146
+ dueDateDays: z.number().optional().describe('Days after issue date for due date'),
147
+ dueDateFixedDay: z.number().optional().describe('Fixed day of month for due date (1-31)'),
148
+ notes: z.string().nullable().optional().describe('Internal notes'),
149
+ paymentTerms: z.string().nullable().optional().describe('Payment terms text'),
150
+ autoEmailEnabled: z.boolean().optional().describe('Auto-send email on invoice generation'),
151
+ autoEmailTime: z.string().optional().describe('Time to send email (HH:mm)'),
152
+ autoEmailDayOffset: z.number().optional().describe('Days offset for email sending'),
153
+ penaltyEnabled: z.boolean().optional().describe('Enable late payment penalties'),
154
+ penaltyPercentPerDay: z.number().optional().describe('Daily penalty percentage'),
155
+ penaltyGraceDays: z.number().optional().describe('Grace period in days before penalties apply'),
156
+ lines: z.array(recurringLineItemSchema).optional().describe('Array of line items (replaces all existing lines)'),
157
+ }),
158
+ handler: async (params) => {
159
+ const config = getConfig();
160
+ if (!config.token)
161
+ return notAuthenticated();
162
+ const companyId = params.companyId || config.companyId;
163
+ if (!companyId)
164
+ return noCompanySelected();
165
+ const { uuid, companyId: _cid, ...body } = params;
166
+ const res = await apiRequest(`/api/v1/recurring-invoices/${uuid}`, {
167
+ method: 'PUT',
168
+ companyId,
169
+ body: body,
170
+ });
171
+ return formatResponse(res);
172
+ },
173
+ },
174
+ {
175
+ name: 'recurring_invoices_delete',
176
+ description: 'Permanently delete a recurring invoice template. Previously generated invoices from this template are not affected. Use toggle to temporarily pause instead.',
177
+ inputSchema: z.object({
178
+ uuid: z.string().describe('UUID of the recurring invoice template to delete'),
179
+ companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
180
+ }),
181
+ handler: async (params) => {
182
+ const config = getConfig();
183
+ if (!config.token)
184
+ return notAuthenticated();
185
+ const companyId = params.companyId || config.companyId;
186
+ if (!companyId)
187
+ return noCompanySelected();
188
+ const res = await apiRequest(`/api/v1/recurring-invoices/${params.uuid}`, {
189
+ method: 'DELETE',
190
+ companyId,
191
+ });
192
+ return formatResponse(res);
193
+ },
194
+ },
195
+ {
196
+ name: 'recurring_invoices_toggle',
197
+ description: 'Toggle the active status of a recurring invoice template to pause or resume automatic invoice generation. If active, it will be paused; if paused, it will be resumed.',
198
+ inputSchema: z.object({
199
+ uuid: z.string().describe('UUID of the recurring invoice template to toggle'),
200
+ companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
201
+ }),
202
+ handler: async (params) => {
203
+ const config = getConfig();
204
+ if (!config.token)
205
+ return notAuthenticated();
206
+ const companyId = params.companyId || config.companyId;
207
+ if (!companyId)
208
+ return noCompanySelected();
209
+ const res = await apiRequest(`/api/v1/recurring-invoices/${params.uuid}/toggle`, {
210
+ method: 'POST',
211
+ companyId,
212
+ });
213
+ return formatResponse(res);
214
+ },
215
+ },
216
+ {
217
+ name: 'recurring_invoices_bulk_delete',
218
+ description: 'Delete multiple recurring invoice templates in a single request. Returns the count of deleted items and any errors for items that could not be deleted.',
219
+ inputSchema: z.object({
220
+ ids: z.array(z.string()).min(1).max(100).describe('Array of recurring invoice UUIDs to delete (1-100)'),
221
+ companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
222
+ }),
223
+ handler: async (params) => {
224
+ const config = getConfig();
225
+ if (!config.token)
226
+ return notAuthenticated();
227
+ const companyId = params.companyId || config.companyId;
228
+ if (!companyId)
229
+ return noCompanySelected();
230
+ const res = await apiRequest('/api/v1/recurring-invoices/bulk-delete', {
231
+ method: 'POST',
232
+ companyId,
233
+ body: { ids: params.ids },
234
+ });
235
+ return formatResponse(res);
236
+ },
237
+ },
238
+ {
239
+ name: 'recurring_invoices_bulk_toggle_active',
240
+ description: 'Toggle the active/paused status of multiple recurring invoices at once. Set active=true to resume or active=false to pause invoice generation.',
241
+ inputSchema: z.object({
242
+ ids: z.array(z.string()).min(1).max(100).describe('Array of recurring invoice UUIDs (1-100)'),
243
+ active: z.boolean().describe('Set to true to activate, false to pause'),
244
+ companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
245
+ }),
246
+ handler: async (params) => {
247
+ const config = getConfig();
248
+ if (!config.token)
249
+ return notAuthenticated();
250
+ const companyId = params.companyId || config.companyId;
251
+ if (!companyId)
252
+ return noCompanySelected();
253
+ const res = await apiRequest('/api/v1/recurring-invoices/bulk-toggle-active', {
254
+ method: 'POST',
255
+ companyId,
256
+ body: { ids: params.ids, active: params.active },
257
+ });
258
+ return formatResponse(res);
259
+ },
260
+ },
261
+ {
262
+ name: 'recurring_invoices_bulk_issue_now',
263
+ description: 'Immediately generate invoices from multiple recurring invoice templates. Useful for triggering generation outside the normal schedule. Does not update the nextIssuanceDate.',
264
+ inputSchema: z.object({
265
+ ids: z.array(z.string()).min(1).max(100).describe('Array of recurring invoice UUIDs (1-100)'),
266
+ companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
267
+ }),
268
+ handler: async (params) => {
269
+ const config = getConfig();
270
+ if (!config.token)
271
+ return notAuthenticated();
272
+ const companyId = params.companyId || config.companyId;
273
+ if (!companyId)
274
+ return noCompanySelected();
275
+ const res = await apiRequest('/api/v1/recurring-invoices/bulk-issue-now', {
276
+ method: 'POST',
277
+ companyId,
278
+ body: { ids: params.ids },
279
+ });
280
+ return formatResponse(res);
281
+ },
282
+ },
283
+ {
284
+ name: 'recurring_invoices_issue_now',
285
+ description: 'Manually trigger immediate invoice generation from a recurring invoice template, bypassing the scheduled generation. Useful for testing configurations or creating one-off invoices. Does not update the nextIssuanceDate.',
286
+ inputSchema: z.object({
287
+ uuid: z.string().describe('UUID of the recurring invoice template to issue now'),
288
+ companyId: z.string().optional().describe('Company UUID (overrides configured default)'),
289
+ }),
290
+ handler: async (params) => {
291
+ const config = getConfig();
292
+ if (!config.token)
293
+ return notAuthenticated();
294
+ const companyId = params.companyId || config.companyId;
295
+ if (!companyId)
296
+ return noCompanySelected();
297
+ const res = await apiRequest(`/api/v1/recurring-invoices/${params.uuid}/issue-now`, {
298
+ method: 'POST',
299
+ companyId,
300
+ });
301
+ return formatResponse(res);
302
+ },
303
+ },
304
+ ];
305
+ //# sourceMappingURL=recurring-invoices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recurring-invoices.js","sourceRoot":"","sources":["../../src/tools/recurring-invoices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { z } from 'zod';
2
+ export declare const tools: ({
3
+ name: string;
4
+ description: string;
5
+ inputSchema: z.ZodObject<{
6
+ dateFrom: z.ZodString;
7
+ dateTo: z.ZodString;
8
+ companyId: z.ZodOptional<z.ZodString>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ dateFrom: string;
11
+ dateTo: string;
12
+ companyId?: string | undefined;
13
+ }, {
14
+ dateFrom: string;
15
+ dateTo: string;
16
+ companyId?: string | undefined;
17
+ }>;
18
+ handler: (params: Record<string, unknown>) => Promise<string>;
19
+ } | {
20
+ name: string;
21
+ description: string;
22
+ inputSchema: z.ZodObject<{
23
+ year: z.ZodNumber;
24
+ companyId: z.ZodOptional<z.ZodString>;
25
+ }, "strip", z.ZodTypeAny, {
26
+ year: number;
27
+ companyId?: string | undefined;
28
+ }, {
29
+ year: number;
30
+ companyId?: string | undefined;
31
+ }>;
32
+ handler: (params: Record<string, unknown>) => Promise<string>;
33
+ } | {
34
+ name: string;
35
+ description: string;
36
+ inputSchema: z.ZodObject<{
37
+ id: z.ZodString;
38
+ companyId: z.ZodOptional<z.ZodString>;
39
+ }, "strip", z.ZodTypeAny, {
40
+ id: string;
41
+ companyId?: string | undefined;
42
+ }, {
43
+ id: string;
44
+ companyId?: string | undefined;
45
+ }>;
46
+ handler: (params: Record<string, unknown>) => Promise<string>;
47
+ })[];
48
+ //# sourceMappingURL=reports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../src/tools/reports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;sBAyDU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;sBAkCzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;sBAuDzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;IA+DpE,CAAC"}
@@ -0,0 +1,200 @@
1
+ import { z } from 'zod';
2
+ import { apiRequest } from '../client.js';
3
+ import { formatResponse, notAuthenticated, noCompanySelected } from '../utils/errors.js';
4
+ import { getConfig } from '../config.js';
5
+ export const tools = [
6
+ {
7
+ name: 'reports_vat',
8
+ description: 'Generate a detailed VAT (TVA) report for a specific month. Returns a summary of sales, purchases, VAT collected, VAT deductible, and net VAT due, along with per-invoice details. Requires X-Company header (companyId param or STORNO_COMPANY_ID env var).',
9
+ inputSchema: z.object({
10
+ year: z
11
+ .number()
12
+ .int()
13
+ .min(2000)
14
+ .max(2100)
15
+ .describe('Report year (e.g. 2026)'),
16
+ month: z
17
+ .number()
18
+ .int()
19
+ .min(1)
20
+ .max(12)
21
+ .describe('Report month (1–12)'),
22
+ companyId: z
23
+ .string()
24
+ .optional()
25
+ .describe('Company UUID (overrides STORNO_COMPANY_ID env var)'),
26
+ }),
27
+ handler: async (params) => {
28
+ if (!getConfig().token)
29
+ return notAuthenticated();
30
+ const { year, month, companyId } = params;
31
+ const effectiveCompanyId = companyId || getConfig().companyId;
32
+ if (!effectiveCompanyId)
33
+ return noCompanySelected();
34
+ const res = await apiRequest('/api/v1/reports/vat', {
35
+ companyId: effectiveCompanyId,
36
+ query: { year, month },
37
+ });
38
+ return formatResponse(res);
39
+ },
40
+ },
41
+ {
42
+ name: 'reports_sales_analysis',
43
+ description: 'Generate a sales analysis report for a date range. Returns KPI summary (annual total, invoiced, collected, outstanding), monthly revenue trends, recent invoices, top clients, and top products. Requires X-Company header (companyId param or STORNO_COMPANY_ID env var).',
44
+ inputSchema: z.object({
45
+ dateFrom: z
46
+ .string()
47
+ .describe('Start date in YYYY-MM-DD format (e.g. 2026-01-01)'),
48
+ dateTo: z
49
+ .string()
50
+ .describe('End date in YYYY-MM-DD format (e.g. 2026-02-26)'),
51
+ companyId: z
52
+ .string()
53
+ .optional()
54
+ .describe('Company UUID (overrides STORNO_COMPANY_ID env var)'),
55
+ }),
56
+ handler: async (params) => {
57
+ if (!getConfig().token)
58
+ return notAuthenticated();
59
+ const { dateFrom, dateTo, companyId } = params;
60
+ const effectiveCompanyId = companyId || getConfig().companyId;
61
+ if (!effectiveCompanyId)
62
+ return noCompanySelected();
63
+ const res = await apiRequest('/api/v1/reports/sales', {
64
+ companyId: effectiveCompanyId,
65
+ query: { dateFrom, dateTo },
66
+ });
67
+ return formatResponse(res);
68
+ },
69
+ },
70
+ {
71
+ name: 'balance_analysis',
72
+ description: 'Get balance analysis (Analiza Balante) for a year. Returns financial indicators (revenue, expenses, profit, turnover, salaries, etc.), monthly evolution, profitability ratios, top expenses by account, and year-over-year comparison. Data comes from uploaded trial balance PDFs. Requires X-Company header.',
73
+ inputSchema: z.object({
74
+ year: z
75
+ .number()
76
+ .int()
77
+ .min(2000)
78
+ .max(2100)
79
+ .describe('Analysis year (e.g. 2025)'),
80
+ companyId: z
81
+ .string()
82
+ .optional()
83
+ .describe('Company UUID (overrides STORNO_COMPANY_ID env var)'),
84
+ }),
85
+ handler: async (params) => {
86
+ if (!getConfig().token)
87
+ return notAuthenticated();
88
+ const { year, companyId } = params;
89
+ const effectiveCompanyId = companyId || getConfig().companyId;
90
+ if (!effectiveCompanyId)
91
+ return noCompanySelected();
92
+ const res = await apiRequest('/api/v1/balances/analysis', {
93
+ companyId: effectiveCompanyId,
94
+ query: { year },
95
+ });
96
+ return formatResponse(res);
97
+ },
98
+ },
99
+ {
100
+ name: 'balance_list',
101
+ description: 'List uploaded trial balances (Balante de verificare) for a year. Shows upload status (pending/processing/completed/failed), month, account count, and source software for each uploaded balance.',
102
+ inputSchema: z.object({
103
+ year: z
104
+ .number()
105
+ .int()
106
+ .min(2000)
107
+ .max(2100)
108
+ .describe('Year to list balances for (e.g. 2025)'),
109
+ companyId: z
110
+ .string()
111
+ .optional()
112
+ .describe('Company UUID (overrides STORNO_COMPANY_ID env var)'),
113
+ }),
114
+ handler: async (params) => {
115
+ if (!getConfig().token)
116
+ return notAuthenticated();
117
+ const { year, companyId } = params;
118
+ const effectiveCompanyId = companyId || getConfig().companyId;
119
+ if (!effectiveCompanyId)
120
+ return noCompanySelected();
121
+ const res = await apiRequest('/api/v1/balances', {
122
+ companyId: effectiveCompanyId,
123
+ query: { year },
124
+ });
125
+ return formatResponse(res);
126
+ },
127
+ },
128
+ {
129
+ name: 'balance_rows',
130
+ description: 'Get the parsed account rows for a trial balance. Returns all account codes, names, and 10 numeric columns (initial/previous/current/total/final debit & credit). Useful for verifying PDF parsing results.',
131
+ inputSchema: z.object({
132
+ id: z.string().describe('Trial balance UUID'),
133
+ companyId: z
134
+ .string()
135
+ .optional()
136
+ .describe('Company UUID (overrides STORNO_COMPANY_ID env var)'),
137
+ }),
138
+ handler: async (params) => {
139
+ if (!getConfig().token)
140
+ return notAuthenticated();
141
+ const { id, companyId } = params;
142
+ const effectiveCompanyId = companyId || getConfig().companyId;
143
+ if (!effectiveCompanyId)
144
+ return noCompanySelected();
145
+ const res = await apiRequest(`/api/v1/balances/${id}/rows`, {
146
+ companyId: effectiveCompanyId,
147
+ });
148
+ return formatResponse(res);
149
+ },
150
+ },
151
+ {
152
+ name: 'balance_reprocess',
153
+ description: 'Reprocess a trial balance PDF. Re-parses the PDF file and updates the account rows. Useful after parser improvements.',
154
+ inputSchema: z.object({
155
+ id: z.string().describe('Trial balance UUID to reprocess'),
156
+ companyId: z
157
+ .string()
158
+ .optional()
159
+ .describe('Company UUID (overrides STORNO_COMPANY_ID env var)'),
160
+ }),
161
+ handler: async (params) => {
162
+ if (!getConfig().token)
163
+ return notAuthenticated();
164
+ const { id, companyId } = params;
165
+ const effectiveCompanyId = companyId || getConfig().companyId;
166
+ if (!effectiveCompanyId)
167
+ return noCompanySelected();
168
+ const res = await apiRequest(`/api/v1/balances/${id}/reprocess`, {
169
+ companyId: effectiveCompanyId,
170
+ method: 'POST',
171
+ });
172
+ return formatResponse(res);
173
+ },
174
+ },
175
+ {
176
+ name: 'balance_delete',
177
+ description: 'Delete an uploaded trial balance by ID. This soft-deletes the balance and its parsed account rows.',
178
+ inputSchema: z.object({
179
+ id: z.string().describe('Trial balance UUID to delete'),
180
+ companyId: z
181
+ .string()
182
+ .optional()
183
+ .describe('Company UUID (overrides STORNO_COMPANY_ID env var)'),
184
+ }),
185
+ handler: async (params) => {
186
+ if (!getConfig().token)
187
+ return notAuthenticated();
188
+ const { id, companyId } = params;
189
+ const effectiveCompanyId = companyId || getConfig().companyId;
190
+ if (!effectiveCompanyId)
191
+ return noCompanySelected();
192
+ const res = await apiRequest(`/api/v1/balances/${id}`, {
193
+ companyId: effectiveCompanyId,
194
+ method: 'DELETE',
195
+ });
196
+ return formatResponse(res);
197
+ },
198
+ },
199
+ ];
200
+ //# sourceMappingURL=reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../src/tools/reports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ export declare const tools: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
6
+ handler: (_params: Record<string, unknown>) => Promise<string>;
7
+ }[];
8
+ //# sourceMappingURL=storage-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-config.d.ts","sourceRoot":"","sources":["../../src/tools/storage-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,KAAK;;;;uBAMW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;GAkHrE,CAAC"}