@nubiia/mcp-freematica 0.6.1

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 (138) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +485 -0
  3. package/dist/clients/base-client.d.ts +31 -0
  4. package/dist/clients/base-client.js +102 -0
  5. package/dist/clients/base-client.js.map +1 -0
  6. package/dist/clients/fiql-builder.d.ts +118 -0
  7. package/dist/clients/fiql-builder.js +257 -0
  8. package/dist/clients/fiql-builder.js.map +1 -0
  9. package/dist/clients/freematica-client.d.ts +659 -0
  10. package/dist/clients/freematica-client.js +1327 -0
  11. package/dist/clients/freematica-client.js.map +1 -0
  12. package/dist/clients/hardened-base-client.d.ts +143 -0
  13. package/dist/clients/hardened-base-client.js +366 -0
  14. package/dist/clients/hardened-base-client.js.map +1 -0
  15. package/dist/config.d.ts +104 -0
  16. package/dist/config.js +105 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/index.d.ts +2 -0
  19. package/dist/index.js +55 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/logger.d.ts +71 -0
  22. package/dist/logger.js +114 -0
  23. package/dist/logger.js.map +1 -0
  24. package/dist/schemas/albaranes.d.ts +124 -0
  25. package/dist/schemas/albaranes.js +250 -0
  26. package/dist/schemas/albaranes.js.map +1 -0
  27. package/dist/schemas/cartera.d.ts +70 -0
  28. package/dist/schemas/cartera.js +104 -0
  29. package/dist/schemas/cartera.js.map +1 -0
  30. package/dist/schemas/contratos.d.ts +7 -0
  31. package/dist/schemas/contratos.js +2 -0
  32. package/dist/schemas/contratos.js.map +1 -0
  33. package/dist/schemas/facturas-electronicas.d.ts +60 -0
  34. package/dist/schemas/facturas-electronicas.js +79 -0
  35. package/dist/schemas/facturas-electronicas.js.map +1 -0
  36. package/dist/schemas/facturas-ventas.d.ts +118 -0
  37. package/dist/schemas/facturas-ventas.js +153 -0
  38. package/dist/schemas/facturas-ventas.js.map +1 -0
  39. package/dist/schemas/filters.d.ts +92 -0
  40. package/dist/schemas/filters.js +76 -0
  41. package/dist/schemas/filters.js.map +1 -0
  42. package/dist/schemas/master-data.d.ts +26 -0
  43. package/dist/schemas/master-data.js +86 -0
  44. package/dist/schemas/master-data.js.map +1 -0
  45. package/dist/schemas/pagination.d.ts +14 -0
  46. package/dist/schemas/pagination.js +27 -0
  47. package/dist/schemas/pagination.js.map +1 -0
  48. package/dist/schemas/pedidos-compras.d.ts +92 -0
  49. package/dist/schemas/pedidos-compras.js +189 -0
  50. package/dist/schemas/pedidos-compras.js.map +1 -0
  51. package/dist/server-instructions.d.ts +1 -0
  52. package/dist/server-instructions.js +83 -0
  53. package/dist/server-instructions.js.map +1 -0
  54. package/dist/server.d.ts +6 -0
  55. package/dist/server.js +41 -0
  56. package/dist/server.js.map +1 -0
  57. package/dist/tools/albaranes.d.ts +16 -0
  58. package/dist/tools/albaranes.js +202 -0
  59. package/dist/tools/albaranes.js.map +1 -0
  60. package/dist/tools/calendarios.d.ts +13 -0
  61. package/dist/tools/calendarios.js +82 -0
  62. package/dist/tools/calendarios.js.map +1 -0
  63. package/dist/tools/cartera.d.ts +13 -0
  64. package/dist/tools/cartera.js +78 -0
  65. package/dist/tools/cartera.js.map +1 -0
  66. package/dist/tools/clientes.d.ts +3 -0
  67. package/dist/tools/clientes.js +48 -0
  68. package/dist/tools/clientes.js.map +1 -0
  69. package/dist/tools/contabilidad.d.ts +14 -0
  70. package/dist/tools/contabilidad.js +259 -0
  71. package/dist/tools/contabilidad.js.map +1 -0
  72. package/dist/tools/contactos-clientes.d.ts +3 -0
  73. package/dist/tools/contactos-clientes.js +25 -0
  74. package/dist/tools/contactos-clientes.js.map +1 -0
  75. package/dist/tools/contratos.d.ts +10 -0
  76. package/dist/tools/contratos.js +35 -0
  77. package/dist/tools/contratos.js.map +1 -0
  78. package/dist/tools/facturas-compras.d.ts +13 -0
  79. package/dist/tools/facturas-compras.js +131 -0
  80. package/dist/tools/facturas-compras.js.map +1 -0
  81. package/dist/tools/facturas-electronicas.d.ts +17 -0
  82. package/dist/tools/facturas-electronicas.js +268 -0
  83. package/dist/tools/facturas-electronicas.js.map +1 -0
  84. package/dist/tools/facturas-ventas.d.ts +16 -0
  85. package/dist/tools/facturas-ventas.js +181 -0
  86. package/dist/tools/facturas-ventas.js.map +1 -0
  87. package/dist/tools/helpers.d.ts +17 -0
  88. package/dist/tools/helpers.js +36 -0
  89. package/dist/tools/helpers.js.map +1 -0
  90. package/dist/tools/localizaciones.d.ts +17 -0
  91. package/dist/tools/localizaciones.js +192 -0
  92. package/dist/tools/localizaciones.js.map +1 -0
  93. package/dist/tools/master-data.d.ts +10 -0
  94. package/dist/tools/master-data.js +70 -0
  95. package/dist/tools/master-data.js.map +1 -0
  96. package/dist/tools/oportunidades-negocio.d.ts +3 -0
  97. package/dist/tools/oportunidades-negocio.js +68 -0
  98. package/dist/tools/oportunidades-negocio.js.map +1 -0
  99. package/dist/tools/pedidos-compras.d.ts +14 -0
  100. package/dist/tools/pedidos-compras.js +105 -0
  101. package/dist/tools/pedidos-compras.js.map +1 -0
  102. package/dist/tools/personal.d.ts +13 -0
  103. package/dist/tools/personal.js +154 -0
  104. package/dist/tools/personal.js.map +1 -0
  105. package/dist/tools/prl.d.ts +47 -0
  106. package/dist/tools/prl.js +242 -0
  107. package/dist/tools/prl.js.map +1 -0
  108. package/dist/tools/proveedores.d.ts +14 -0
  109. package/dist/tools/proveedores.js +122 -0
  110. package/dist/tools/proveedores.js.map +1 -0
  111. package/dist/transports/http.d.ts +12 -0
  112. package/dist/transports/http.js +110 -0
  113. package/dist/transports/http.js.map +1 -0
  114. package/dist/transports/stdio.d.ts +12 -0
  115. package/dist/transports/stdio.js +15 -0
  116. package/dist/transports/stdio.js.map +1 -0
  117. package/dist/types/api-envelope.d.ts +27 -0
  118. package/dist/types/api-envelope.js +2 -0
  119. package/dist/types/api-envelope.js.map +1 -0
  120. package/dist/types/clientes.d.ts +9 -0
  121. package/dist/types/clientes.js +2 -0
  122. package/dist/types/clientes.js.map +1 -0
  123. package/dist/types/contactos-clientes.d.ts +7 -0
  124. package/dist/types/contactos-clientes.js +2 -0
  125. package/dist/types/contactos-clientes.js.map +1 -0
  126. package/dist/types/contratos.d.ts +8 -0
  127. package/dist/types/contratos.js +2 -0
  128. package/dist/types/contratos.js.map +1 -0
  129. package/dist/types/master-data.d.ts +9 -0
  130. package/dist/types/master-data.js +2 -0
  131. package/dist/types/master-data.js.map +1 -0
  132. package/dist/types/oportunidades-negocio.d.ts +8 -0
  133. package/dist/types/oportunidades-negocio.js +2 -0
  134. package/dist/types/oportunidades-negocio.js.map +1 -0
  135. package/dist/utils/size-guardrail.d.ts +22 -0
  136. package/dist/utils/size-guardrail.js +31 -0
  137. package/dist/utils/size-guardrail.js.map +1 -0
  138. package/package.json +90 -0
@@ -0,0 +1,659 @@
1
+ import { BaseClient } from './base-client.js';
2
+ import { type MasterDataCatalog } from '../schemas/master-data.js';
3
+ import { type ListCarteraFilters } from '../schemas/cartera.js';
4
+ import type { ListFacturasCabeceraFilters, ListFacturaLineasFilters, ListFacturaIvaFilters, ListFacturaVencimientosFilters } from '../schemas/facturas-ventas.js';
5
+ import { type ListPedidosCompraFilters } from '../schemas/pedidos-compras.js';
6
+ import type { Cliente } from '../types/clientes.js';
7
+ import type { ContactoCliente } from '../types/contactos-clientes.js';
8
+ import type { MasterDataItem } from '../types/master-data.js';
9
+ import type { OportunidadNegocio } from '../types/oportunidades-negocio.js';
10
+ import type { VoContratosServMatAsignado } from '../types/contratos.js';
11
+ export interface ListResult<T> {
12
+ items: T[];
13
+ total: number;
14
+ }
15
+ export interface ListOptions {
16
+ page?: number;
17
+ items?: number;
18
+ }
19
+ /**
20
+ * Typed client for the Freemática REST API.
21
+ *
22
+ * One method per exposed endpoint (or per family of endpoints). The wrapper
23
+ * `{ errorCode, errorMessage, data }` is unwrapped by `BaseClient.request`,
24
+ * so methods only see `data`.
25
+ *
26
+ * For list endpoints, `data` has shape `{ total, items, rowHeight }`. List
27
+ * methods unwrap that to `{ items, total }` (string total → number; rowHeight
28
+ * discarded).
29
+ *
30
+ * For detail endpoints, `data` is the entity directly.
31
+ */
32
+ export declare class FreematicaClient extends BaseClient {
33
+ /**
34
+ * Obtener lista de material asignado a servicios.
35
+ *
36
+ * Endpoint: GET /pvss/v2/contratos-servicios-material
37
+ */
38
+ getMaterialesAsignadosServicios(): Promise<ListResult<VoContratosServMatAsignado>>;
39
+ /**
40
+ * Obtener un catálogo de datos maestros.
41
+ */
42
+ getMasterData(catalog: MasterDataCatalog): Promise<ListResult<MasterDataItem>>;
43
+ /** Lista paginada de clientes. */
44
+ listClientes(opts?: ListOptions): Promise<ListResult<Cliente>>;
45
+ /** Detalle de un cliente por `idReg` opaco. */
46
+ getCliente(idReg: string): Promise<Cliente>;
47
+ /** Lista paginada de contactos de clientes. */
48
+ listContactosClientes(opts?: ListOptions): Promise<ListResult<ContactoCliente>>;
49
+ /** Lista paginada de oportunidades de negocio. */
50
+ listOportunidadesNegocio(opts?: ListOptions): Promise<ListResult<OportunidadNegocio>>;
51
+ /** Detalle de una oportunidad por `idReg` opaco. */
52
+ getOportunidadNegocio(idReg: string): Promise<OportunidadNegocio>;
53
+ /**
54
+ * Datos ampliados de una oportunidad por `idReg` opaco.
55
+ *
56
+ * Puede devolver `not_found` si la oportunidad no tiene datos ampliados.
57
+ * El caller debe manejar el `FreematicaError` con código `not_found`.
58
+ */
59
+ getOportunidadNegocioDatosAmpliados(idReg: string): Promise<Record<string, unknown>>;
60
+ /**
61
+ * Opciones de filtro para getFichaPrevCliente.
62
+ *
63
+ * Los query params mapean directamente a los parámetros nativos del endpoint
64
+ * GET /pprl/v2/ficha-prev-cliente. NO se usa FIQL en este endpoint.
65
+ */
66
+ /**
67
+ * Obtiene la ficha de PRL de un cliente.
68
+ *
69
+ * Endpoint: GET /pprl/v2/ficha-prev-cliente
70
+ *
71
+ * Los filtros se envían como query params nativos (codCli, grpCli, locServ,
72
+ * codigo). La validación de "al menos uno" es responsabilidad del caller
73
+ * (la tool lo hace via Zod .refine()).
74
+ *
75
+ * @param opts - Filtros: codCliente, grupoCliente, codLocalizacionServicio, codigoFicha.
76
+ * @returns Lista de fichas PRL que coinciden con los filtros.
77
+ */
78
+ getFichaPrevCliente(opts: {
79
+ codCliente?: string;
80
+ grupoCliente?: number;
81
+ codLocalizacionServicio?: number;
82
+ codigoFicha?: string;
83
+ }): Promise<ListResult<Record<string, unknown>>>;
84
+ /**
85
+ * Lista de cuentas del plan contable.
86
+ *
87
+ * Endpoint: GET /pcon/v2/cuentas
88
+ *
89
+ * Los filtros opcionales se mapean a una expresión FIQL y se pasan como
90
+ * query param `rquery`. El prefijoCuenta usa operador `=ge=` / `=lt=` para
91
+ * emular un prefix match sobre COD_CTA (rango léxico).
92
+ *
93
+ * @param opts - Filtros opcionales: codPlan, prefijoCuenta, activa, grupoCuenta.
94
+ */
95
+ listCuentasContables(opts?: CuentasContablesOptions): Promise<ListResult<Record<string, unknown>>>;
96
+ /**
97
+ * Opciones de filtro para listVigilanciaSalud.
98
+ */
99
+ /**
100
+ * Lista paginada de registros de Vigilancia de la Salud.
101
+ *
102
+ * Endpoint: GET /pprl/v1/vigilancia-salud
103
+ *
104
+ * `idRegPersona` se envía como query param nativo. El resto de filtros se
105
+ * codifican en FIQL y se envían como `rquery`.
106
+ *
107
+ * @param opts - Opciones de paginación y filtrado.
108
+ * @returns Lista paginada de registros VS.
109
+ */
110
+ listVigilanciaSalud(opts: {
111
+ page?: number;
112
+ items?: number;
113
+ idRegPersona?: string;
114
+ empresa?: string;
115
+ delegacion?: string;
116
+ codPersona?: string;
117
+ tipoRevision?: string;
118
+ resultado?: string;
119
+ fechaCitaDesde?: string;
120
+ fechaCitaHasta?: string;
121
+ }): Promise<ListResult<Record<string, unknown>>>;
122
+ /**
123
+ * Lista de cuentas analíticas.
124
+ *
125
+ * Endpoint: GET /pcon/v2/cuentas-analiticas
126
+ *
127
+ * @param opts - Filtros opcionales: codPlan, prefijoCuenta, activa, grupoCuenta, area, delegacion.
128
+ */
129
+ listCuentasAnaliticas(opts?: CuentasAnaliticasOptions): Promise<ListResult<Record<string, unknown>>>;
130
+ /**
131
+ * Detalle de un registro de Vigilancia de la Salud por `idReg` opaco.
132
+ *
133
+ * Endpoint: GET /pprl/v1/vigilancia-salud/{idreg}
134
+ *
135
+ * @param idReg - Identificador opaco del registro.
136
+ * @returns Objeto con todos los campos del registro VS.
137
+ */
138
+ getVigilanciaSalud(idReg: string): Promise<Record<string, unknown>>;
139
+ /**
140
+ * Lista paginada de personas (empleados) con filtros FIQL opcionales.
141
+ *
142
+ * Endpoint: GET /pers/v2/personal
143
+ *
144
+ * El filtro `activo` (boolean) se traduce a `VSSPER_ACTIVO==S` (true) o
145
+ * `VSSPER_ACTIVO==N` (false). Las búsquedas por `nombre` y `apellido` usan
146
+ * el operador de igualdad estándar FIQL (el servidor aplica LIKE internamente
147
+ * para estos campos).
148
+ *
149
+ * @param opts - Opciones de paginación y filtrado.
150
+ * @returns Lista paginada de personas.
151
+ */
152
+ listPersonal(opts: {
153
+ page?: number;
154
+ items?: number;
155
+ empresa?: string;
156
+ delegacion?: string;
157
+ codPersona?: string;
158
+ nombre?: string;
159
+ apellido?: string;
160
+ nif?: string;
161
+ situacion?: string;
162
+ departamento?: string;
163
+ seccion?: string;
164
+ activo?: boolean;
165
+ }): Promise<ListResult<Record<string, unknown>>>;
166
+ /**
167
+ * Detalle de una persona por `idReg` opaco.
168
+ *
169
+ * Endpoint: GET /pers/v2/personal/{idreg}
170
+ *
171
+ * @param idReg - Identificador opaco de la persona.
172
+ * @returns Objeto con todos los campos de la persona.
173
+ */
174
+ getPersona(idReg: string): Promise<Record<string, unknown>>;
175
+ /**
176
+ * Lista paginada de calendarios laborales.
177
+ *
178
+ * Endpoint: GET /pgrl/v1/calendarios
179
+ *
180
+ * @param opts - Opciones de paginación.
181
+ * @returns Lista paginada de calendarios.
182
+ */
183
+ listCalendarios(opts?: ListOptions): Promise<ListResult<Record<string, unknown>>>;
184
+ /**
185
+ * Lista paginada de periodos de un calendario laboral.
186
+ *
187
+ * Endpoint: GET /pgrl/v1/calendarios/{idreg}/periodos
188
+ *
189
+ * @param idCalendario - idReg opaco del calendario.
190
+ * @param opts - Opciones de paginación.
191
+ * @returns Lista paginada de periodos del calendario.
192
+ */
193
+ listCalendarioPeriodos(idCalendario: string, opts?: ListOptions): Promise<ListResult<Record<string, unknown>>>;
194
+ /**
195
+ * Exporta asientos contables de Freemática.
196
+ *
197
+ * Endpoint: GET /pcon/v2/export-asientos
198
+ *
199
+ * Los parámetros `empresa`, `cal` y `periodo` son query params nativos.
200
+ * Los filtros `fechaDesde`, `fechaHasta`, `diario` y `borrador` se envían
201
+ * como expresión FIQL en el param `rquery`.
202
+ *
203
+ * Protección de tamaño: si el JSON serializado supera
204
+ * `FREEMATICA_MAX_RESPONSE_SIZE_MB` (default 10 MB), los items se truncan
205
+ * y se añade un campo `warning` a la respuesta.
206
+ *
207
+ * @param opts - Opciones de exportación.
208
+ * @returns Resultado con `items`, `total`, y opcionalmente `truncated`+`warning`.
209
+ */
210
+ exportAsientos(opts: ExportAsientosOptions): Promise<ExportAsientosResult>;
211
+ /**
212
+ * Lista paginada de facturas de compras con filtros FIQL + query params nativos.
213
+ *
214
+ * El campo `exportado` es un enum nativo del endpoint (no FIQL): `all` | `not_exported`.
215
+ * El resto de filtros se envían mediante el query param `rquery` (FIQL).
216
+ *
217
+ * Endpoint: GET /pcmp/v2/facturas-compras
218
+ */
219
+ listFacturasCompras(opts?: ListOptions & {
220
+ fechaDesde?: string;
221
+ fechaHasta?: string;
222
+ empresa?: string;
223
+ codProveedor?: string;
224
+ serie?: string;
225
+ numFactura?: string;
226
+ formaPago?: string;
227
+ traspasadoContabilidad?: boolean;
228
+ delegacion?: string;
229
+ lineaNegocio?: string;
230
+ exportado?: 'all' | 'not_exported';
231
+ }): Promise<ListResult<Record<string, unknown>>>;
232
+ /**
233
+ * Lista paginada de documentos de cartera de clientes con filtros FIQL.
234
+ *
235
+ * Endpoint: GET /pcar/v1/cartera-clientes
236
+ *
237
+ * Construye la FIQL a partir de los filtros tipados y la añade como `rquery`
238
+ * usando `appendRquery()` (patrón canónico del foundation TD-117).
239
+ *
240
+ * El filtro `soloImpagados=true` genera `CARCL_FECIMPAG!=null`, donde el
241
+ * valor `'null'` es la convención centinela de Freemática para indicar "sin
242
+ * valor" en campos de fecha opcionales (assumption empírica: observado en
243
+ * datos reales de la API; documentado para futuras implementaciones).
244
+ * El operador `ne` se pasa vía `buildFiql` para garantizar escaping
245
+ * consistente con el resto de filtros.
246
+ *
247
+ * El filtro `estado` mapea a los valores numéricos de `CARCL_SITCAR`
248
+ * (1=pendiente, 2=cancelado, 3=derivado).
249
+ *
250
+ * @param opts - Filtros tipados del schema `ListCarteraFiltersSchema`.
251
+ * @returns Lista paginada de documentos de cartera.
252
+ */
253
+ listCarteraClientes(opts?: ListCarteraFilters): Promise<ListResult<Record<string, unknown>>>;
254
+ /**
255
+ * Detalle de una factura de compra por `idReg` opaco.
256
+ *
257
+ * Endpoint: GET /pcmp/v2/facturas-compras/{idReg}
258
+ */
259
+ getFacturaCompra(idReg: string): Promise<Record<string, unknown>>;
260
+ /**
261
+ * Lista paginada de pedidos de compra con diseño mixto de filtros.
262
+ *
263
+ * Endpoint: GET /pcmp/v2/pedidos
264
+ *
265
+ * DISEÑO MIXTO: el endpoint combina 4 query params nativos con filtros FIQL
266
+ * adicionales vía `rquery`.
267
+ *
268
+ * Filtros que van como **query params nativos** (NO FIQL):
269
+ * - `empresa` (4c) → `codEmpresa`
270
+ * - `codProveedor` (≤10c) → `codProveedor`
271
+ * - `fechaPedidoDesde` (ISO date) → `desdeFecha`
272
+ * - `fechaPedidoHasta` (ISO date) → `hastaFecha`
273
+ *
274
+ * Filtros que van como **FIQL en `rquery`** (campos `ALCC_*`):
275
+ * - `numPedido` → `ALCC_NUMDOC==N`
276
+ * - `codDocumento` → `ALCC_CODDOC==XXXX`
277
+ * - `delegacion` → `ALCC_DELEG==XXXX`
278
+ * - `formaPago` → `ALCC_FPAGO==XXX`
279
+ * - `tipoIva` → `ALCC_TIPO_IVA==XXXX`
280
+ * - `codCliente` → `ALCC_COD_CLIENTE==X`
281
+ * - `codInstalador` → `ALCC_COD_INSTALADOR==X`
282
+ * - `codMantenedor` → `ALCC_COD_MANTENEDOR==X`
283
+ * - `fechaEntregaDesde` → `ALCC_FCHENTREGA=ge=YYYY-MM-DD`
284
+ * - `fechaEntregaHasta` → `ALCC_FCHENTREGA=le=YYYY-MM-DD`
285
+ * - `referencia` → `ALCC_REFERENCIA==X`
286
+ * - `estado` → expresión compuesta sobre `ALCC_PED_BLOQ` y `ALCC_PED_RECIB`
287
+ * (ver `buildEstadoPedidoFiql` y comentario empírico en `EstadoPedidoEnum`)
288
+ *
289
+ * @param opts - Filtros tipados del schema `ListPedidosCompraFiltersSchema`.
290
+ * @returns Lista paginada de pedidos de compra.
291
+ */
292
+ listPedidosCompra(opts?: ListPedidosCompraFilters): Promise<ListResult<Record<string, unknown>>>;
293
+ /**
294
+ * Detalle de un pedido de compra por `idReg` opaco.
295
+ *
296
+ * Endpoint: GET /pcmp/v2/pedidos/{idreg}
297
+ *
298
+ * La respuesta es un objeto compuesto `{ VoPedidosCompraCab, cabecera_proveedor, lineas[] }`
299
+ * que se devuelve sin aplanar para conservar la estructura original del API.
300
+ *
301
+ * @param idReg - Identificador opaco (puede contener caracteres como "==" de base64).
302
+ * @returns Objeto compuesto con la cabecera, datos del proveedor y líneas del pedido.
303
+ */
304
+ getPedidoCompra(idReg: string): Promise<Record<string, unknown>>;
305
+ /**
306
+ * Detalle de un documento de cartera de clientes por `idReg` opaco.
307
+ *
308
+ * Endpoint: GET /pcar/v1/cartera-clientes/{idreg}
309
+ *
310
+ * @param idReg - Identificador opaco (base64) del documento.
311
+ * @returns Documento de cartera completo.
312
+ */
313
+ getCarteraCliente(idReg: string): Promise<Record<string, unknown>>;
314
+ /**
315
+ * Lista paginada de proveedores con filtros FIQL.
316
+ *
317
+ * El filtro `activo` mapea a FECHA_BAJA:
318
+ * - `true` → FECHA_BAJA es nula (proveedor activo). Se usa el operador `=is-null=true` si el
319
+ * API lo soporta; como fallback se omite el filtro y se filtra post-process.
320
+ * En Freemática el convenio estándar es: activo=true → `FECHA_BAJA==null` (FIQL `==null`).
321
+ * - `false` → FECHA_BAJA tiene valor (proveedor de baja).
322
+ *
323
+ * El filtro `nombre` usa operador FIQL `=lk=` para búsqueda parcial (LIKE).
324
+ *
325
+ * Endpoint: GET /pgrl/v2/proveedores
326
+ */
327
+ listProveedores(opts?: ListOptions & {
328
+ codProveedor?: string;
329
+ grupoProveedor?: string;
330
+ nif?: string;
331
+ nombre?: string;
332
+ activo?: boolean;
333
+ tipoIdent?: string;
334
+ codProvincia?: string;
335
+ codPais?: string;
336
+ }): Promise<ListResult<Record<string, unknown>>>;
337
+ /**
338
+ * Lista paginada de cabeceras de facturas de ventas con filtros FIQL.
339
+ *
340
+ * Endpoint: GET /pven/v1/facturas-cabecera
341
+ *
342
+ * @param opts - Filtros tipados del schema `ListFacturasCabeceraFiltersSchema`.
343
+ * @returns Lista paginada de cabeceras de facturas.
344
+ */
345
+ listFacturasCabecera(opts?: ListFacturasCabeceraFilters): Promise<ListResult<Record<string, unknown>>>;
346
+ /**
347
+ * Detalle de un proveedor por `idReg` opaco.
348
+ *
349
+ * Endpoint: GET /pgrl/v2/proveedores/{idReg}
350
+ */
351
+ getProveedor(idReg: string): Promise<Record<string, unknown>>;
352
+ /**
353
+ * Lista paginada de localizaciones de cobro de clientes.
354
+ *
355
+ * Filtros soportados: codCliente (COD_CLI), grupoCliente (GRUPO_CLI), formaPago (COD_FORMA_COBRO).
356
+ *
357
+ * Endpoint: GET /pgrl/v2/localizaciones-cobro-clientes
358
+ */
359
+ listLocalizacionesCobroClientes(opts?: ListOptions & {
360
+ codCliente?: string;
361
+ grupoCliente?: string;
362
+ formaPago?: string;
363
+ }): Promise<ListResult<Record<string, unknown>>>;
364
+ /**
365
+ * Lista paginada de localizaciones de pago de proveedores.
366
+ *
367
+ * Filtros soportados: codProveedor (COD_PRO), grupoProveedor (COD_GRUPO_PRO), formaPago (COD_FORMA_PAGO).
368
+ *
369
+ * Endpoint: GET /pgrl/v2/localizaciones-pago-proveedores
370
+ */
371
+ listLocalizacionesPagoProveedores(opts?: ListOptions & {
372
+ codProveedor?: string;
373
+ grupoProveedor?: string;
374
+ formaPago?: string;
375
+ }): Promise<ListResult<Record<string, unknown>>>;
376
+ /**
377
+ * Lista paginada de localizaciones de servicio de clientes.
378
+ *
379
+ * Filtros soportados: codCliente (COD_CLI), grupoCliente (GRUPO_CLI), codPais (COD_PAIS),
380
+ * codProvincia (COD_PROVINCIA), representante (COD_REPRES), activo (FECHA_BAJA nulo/no nulo).
381
+ *
382
+ * Endpoint: GET /pgrl/v2/localizaciones-servicio-clientes
383
+ */
384
+ listLocalizacionesServicioClientes(opts?: ListOptions & {
385
+ codCliente?: string;
386
+ grupoCliente?: string;
387
+ codPais?: string;
388
+ codProvincia?: string;
389
+ representante?: string;
390
+ activo?: boolean;
391
+ }): Promise<ListResult<Record<string, unknown>>>;
392
+ /**
393
+ * Detalle de una factura de ventas (cabecera) por `idReg` opaco.
394
+ *
395
+ * Endpoint: GET /pven/v1/facturas-cabecera/{idreg}
396
+ *
397
+ * @param idReg - Identificador opaco (base64) de la factura.
398
+ * @returns Factura cabecera completa.
399
+ */
400
+ getFacturaCabecera(idReg: string): Promise<Record<string, unknown>>;
401
+ /**
402
+ * Lista paginada de líneas de una factura de ventas con filtros FIQL.
403
+ *
404
+ * Endpoint: GET /pven/v1/facturas-cabecera/{idreg}/lineas
405
+ *
406
+ * @param idReg - idReg opaco de la factura cabecera.
407
+ * @param opts - Filtros tipados del schema `ListFacturaLineasFiltersSchema`.
408
+ * @returns Lista paginada de líneas de factura.
409
+ */
410
+ listFacturaLineas(idReg: string, opts?: ListFacturaLineasFilters): Promise<ListResult<Record<string, unknown>>>;
411
+ /**
412
+ * Lista paginada de líneas de IVA de una factura de ventas con filtros FIQL.
413
+ *
414
+ * Endpoint: GET /pven/v1/facturas-cabecera/{idreg}/iva
415
+ *
416
+ * @param idReg - idReg opaco de la factura cabecera.
417
+ * @param opts - Filtros tipados del schema `ListFacturaIvaFiltersSchema`.
418
+ * @returns Lista paginada de líneas de IVA.
419
+ */
420
+ listFacturaIva(idReg: string, opts?: ListFacturaIvaFilters): Promise<ListResult<Record<string, unknown>>>;
421
+ /**
422
+ * Lista paginada de vencimientos de una factura de ventas con filtros FIQL.
423
+ *
424
+ * Endpoint: GET /pven/v1/facturas-cabecera/{idreg}/vencimientos
425
+ *
426
+ * @param idReg - idReg opaco de la factura cabecera.
427
+ * @param opts - Filtros tipados del schema `ListFacturaVencimientosFiltersSchema`.
428
+ * @returns Lista paginada de vencimientos.
429
+ */
430
+ listFacturaVencimientos(idReg: string, opts?: ListFacturaVencimientosFilters): Promise<ListResult<Record<string, unknown>>>;
431
+ /**
432
+ * Lista paginada de facturas electrónicas con filtros nativos (NO FIQL).
433
+ *
434
+ * Endpoint: GET /pven/v1/facturas
435
+ *
436
+ * Diferente de listFacturasCabecera: expone las facturas firmadas/enviadas vía
437
+ * Facturae, EDICOM y/o FACe. Los filtros son query params nativos del API.
438
+ *
439
+ * @param opts - Filtros nativos: empresa, codCliente, fechaDesde/Hasta, estado, leido + paginación.
440
+ * @returns Lista paginada de facturas electrónicas con campos FACED_*.
441
+ */
442
+ listFacturasElectronicas(opts: import('../schemas/facturas-electronicas.js').ListFacturasElectronicasFilters): Promise<ListResult<Record<string, unknown>>>;
443
+ /**
444
+ * Lista paginada de albaranes de ventas con filtros nativos del endpoint.
445
+ *
446
+ * Endpoint: GET /pven/v2/albaranes-ventas
447
+ *
448
+ * El endpoint usa exclusivamente query params nativos para los filtros
449
+ * principales (no FIQL). `codEmpresa` es obligatorio según el spec OpenAPI.
450
+ */
451
+ listAlbaranesVentas(opts: {
452
+ page?: number;
453
+ items?: number;
454
+ empresa: string;
455
+ delegacion?: string;
456
+ codCliente?: string;
457
+ codDocumento?: string;
458
+ fechaDesde?: string;
459
+ fechaHasta?: string;
460
+ order?: string;
461
+ }): Promise<ListResult<Record<string, unknown>>>;
462
+ /**
463
+ * Detalle de una factura electrónica por `idReg` opaco.
464
+ *
465
+ * Endpoint: GET /pven/v1/facturas/{idreg}
466
+ *
467
+ * @param idReg - Identificador opaco (base64) de la factura electrónica.
468
+ * @returns Objeto con los campos de la factura electrónica.
469
+ */
470
+ getFacturaElectronica(idReg: string): Promise<Record<string, unknown>>;
471
+ /**
472
+ * Recupera el documento (PDF o XML Facturae firmado) de una factura electrónica.
473
+ *
474
+ * Endpoint: GET /pven/v1/facturas/{idreg}/documento
475
+ *
476
+ * La API devuelve un JSON (VoFacturasDocumento) con los documentos codificados en base64
477
+ * en los campos FACED_DOCUMENTO_PDF, FACED_DOCUMENTO_XML, etc.
478
+ *
479
+ * Si el tamaño del JSON supera FREEMATICA_MAX_RESPONSE_SIZE_MB, la tool aplica el
480
+ * guardrail de tamaño y devuelve `{ truncated: true, warning, sizeBytes }` sin el cuerpo.
481
+ *
482
+ * @param idReg - Identificador opaco de la factura.
483
+ * @param opts - Opciones: documentType (tipo de documento), actualizaLeido (marcar como leído).
484
+ * @returns Objeto VoFacturasDocumento con campos FACED_DOCUMENTO_*.
485
+ */
486
+ getFacturaDocumento(idReg: string, opts?: {
487
+ documentType?: string;
488
+ actualizaLeido?: boolean;
489
+ }): Promise<FacturaDocumentoResult>;
490
+ /**
491
+ * Log de auditoría de una factura electrónica (envío, recepción, aceptación AAPP, etc.).
492
+ *
493
+ * Endpoint: GET /pven/v1/facturas/{idreg}/log
494
+ *
495
+ * @param idReg - Identificador opaco de la factura.
496
+ * @param opts - Opciones de paginación.
497
+ * @returns Lista paginada de eventos de auditoría con campos FVCTRLE_*.
498
+ */
499
+ getFacturaLog(idReg: string, opts?: ListOptions): Promise<ListResult<Record<string, unknown>>>;
500
+ /**
501
+ * Configuración de la integración EDICOM (empresa, aplicación, URLs, credenciales).
502
+ *
503
+ * Endpoint: GET /pven/v1/facturas/edicominfo
504
+ *
505
+ * Devuelve una lista de configuraciones EDICOM (campos EDICOM_*).
506
+ * NOTA: incluye campos sensibles (EDICOM_USER, EDICOM_PASSWORD). Usar con precaución.
507
+ *
508
+ * @param opts - Opciones de paginación.
509
+ * @returns Lista de configuraciones EDICOM con campos EDICOM_*.
510
+ */
511
+ getEdicomInfo(opts?: ListOptions): Promise<ListResult<Record<string, unknown>>>;
512
+ /**
513
+ * Descarga masiva de documentos de facturas electrónicas (PDF/XML/ERROR).
514
+ *
515
+ * Endpoint: GET /pven/v1/facturas/download
516
+ *
517
+ * Permite recuperar múltiples documentos filtrando por identificadores y tipo.
518
+ * Los documentos se devuelven con campos VoEFraDoc (empresa, serie, numFra, documentoPdf, etc.).
519
+ *
520
+ * @param opts - Filtros: documents (IDs separados por comas), documentType (PDF/XML/ERROR).
521
+ * @returns Lista de documentos con campos VoEFraDoc.
522
+ */
523
+ listFacturasDocumentos(opts?: import('../schemas/facturas-electronicas.js').ListFacturasDocumentosFilters): Promise<ListResult<Record<string, unknown>>>;
524
+ /**
525
+ * Detalle de un albarán de venta por `idReg` opaco.
526
+ *
527
+ * Endpoint: GET /pven/v2/albaranes-ventas/{idReg}
528
+ *
529
+ * @param idReg - Identificador opaco (base64) del albarán.
530
+ * @returns Objeto completo del albarán de venta.
531
+ */
532
+ getAlbaranVenta(idReg: string): Promise<Record<string, unknown>>;
533
+ /**
534
+ * Lista paginada de vinculaciones albarán↔factura.
535
+ *
536
+ * Endpoint: GET /pven/v2/albaranes-facturas
537
+ *
538
+ * El filtro `idReg` es un query param nativo. Los filtros empresa, serie,
539
+ * numFactura y codCliente se envían como FIQL en el parámetro `rQuery`.
540
+ *
541
+ * Mapeo de filtros FIQL:
542
+ * | opts.empresa | FVCA_CODEMP |
543
+ * | opts.serie | FVCA_SERIEFRA |
544
+ * | opts.numFactura | FVCA_NUMFRA |
545
+ * | opts.codCliente | FVCA_CODCLI |
546
+ *
547
+ * @param opts - Opciones de paginación y filtros.
548
+ * @returns Lista paginada de vinculaciones albarán-factura.
549
+ */
550
+ listAlbaranesFactura(opts: {
551
+ page?: number;
552
+ items?: number;
553
+ idReg?: string;
554
+ empresa?: string;
555
+ serie?: string;
556
+ numFactura?: string;
557
+ codCliente?: string;
558
+ }): Promise<ListResult<Record<string, unknown>>>;
559
+ /**
560
+ * Detalle de una vinculación albarán↔factura por `idReg` opaco.
561
+ *
562
+ * Endpoint: GET /pven/v2/albaranes-facturas/{idReg}
563
+ *
564
+ * @param idReg - Identificador opaco (base64) del registro de vinculación.
565
+ * @returns Objeto completo de la vinculación albarán-factura.
566
+ */
567
+ getAlbaranFactura(idReg: string): Promise<Record<string, unknown>>;
568
+ /**
569
+ * Lista paginada de resultados del proceso batch de facturación de vigilancia.
570
+ *
571
+ * Endpoint: GET /pvss/v1/facturacion-resultados
572
+ *
573
+ * Todos los filtros se envían como FIQL en el parámetro `rquery`.
574
+ * El parámetro `order` es nativo del endpoint.
575
+ *
576
+ * Mapeo de filtros FIQL:
577
+ * | opts.empresa | FACT_EMP |
578
+ * | opts.delegacion | FACT_DELEG |
579
+ * | opts.codCliente | FACT_COD_CLI |
580
+ * | opts.calendario | FACT_CAL |
581
+ * | opts.mes | FACT_MES |
582
+ * | opts.contrato | FACT_CTRT |
583
+ * | opts.servicio | FACT_SERV |
584
+ * | opts.tipoFac | FACT_TIPFAC |
585
+ * | opts.traspasado | FACT_TRASP |
586
+ *
587
+ * @param opts - Opciones de paginación y filtros FIQL.
588
+ * @returns Lista paginada de resultados de facturación.
589
+ */
590
+ listResultadosFacturacion(opts: {
591
+ page?: number;
592
+ items?: number;
593
+ empresa?: string;
594
+ delegacion?: string;
595
+ codCliente?: string;
596
+ calendario?: string;
597
+ mes?: number;
598
+ contrato?: string;
599
+ servicio?: string;
600
+ tipoFac?: string;
601
+ traspasado?: string;
602
+ order?: string;
603
+ }): Promise<ListResult<Record<string, unknown>>>;
604
+ private listResource;
605
+ /**
606
+ * Helper genérico para endpoints de lista que soportan paginación + filtros FIQL
607
+ * vía query param `rquery`.
608
+ *
609
+ * @param path - Path base del endpoint (sin query string).
610
+ * @param opts - Opciones de paginación.
611
+ * @param fiqlFields - Mapa de nombre de campo FIQL → valor. Los valores `undefined` se omiten.
612
+ * @returns Lista de items con total.
613
+ */
614
+ private listResourceWithFiql;
615
+ }
616
+ /** Filtros para listCuentasContables. */
617
+ export interface CuentasContablesOptions {
618
+ codPlan?: string;
619
+ prefijoCuenta?: string;
620
+ activa?: boolean;
621
+ grupoCuenta?: string;
622
+ }
623
+ /** Filtros para listCuentasAnaliticas. */
624
+ export interface CuentasAnaliticasOptions {
625
+ codPlan?: string;
626
+ prefijoCuenta?: string;
627
+ activa?: boolean;
628
+ grupoCuenta?: string;
629
+ area?: string;
630
+ delegacion?: string;
631
+ }
632
+ /** Opciones para exportAsientos. */
633
+ export interface ExportAsientosOptions {
634
+ empresa: string;
635
+ cal: string;
636
+ periodo?: string;
637
+ fechaDesde?: string;
638
+ fechaHasta?: string;
639
+ diario?: string;
640
+ borrador?: boolean;
641
+ }
642
+ /** Resultado de exportAsientos. */
643
+ export interface ExportAsientosResult extends ListResult<Record<string, unknown>> {
644
+ truncated: boolean;
645
+ warning?: string;
646
+ }
647
+ /**
648
+ * Resultado de getFacturaDocumento.
649
+ *
650
+ * - Si truncated=false: incluye todos los campos VoFacturasDocumento (FACED_DOCUMENTO_PDF, etc.).
651
+ * - Si truncated=true: incluye solo `truncated`, `warning` y `sizeBytes` (sin el cuerpo del documento).
652
+ */
653
+ export type FacturaDocumentoResult = ({
654
+ truncated: false;
655
+ } & Record<string, unknown>) | {
656
+ truncated: true;
657
+ warning: string;
658
+ sizeBytes: number;
659
+ };