@nubiia/mcp-freematica 0.7.0 → 0.9.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 (56) hide show
  1. package/README.md +20 -7
  2. package/dist/clients/fiql-builder.d.ts +32 -8
  3. package/dist/clients/fiql-builder.js +42 -14
  4. package/dist/clients/fiql-builder.js.map +1 -1
  5. package/dist/clients/freematica-client.d.ts +165 -34
  6. package/dist/clients/freematica-client.js +355 -96
  7. package/dist/clients/freematica-client.js.map +1 -1
  8. package/dist/schemas/cartera.d.ts +7 -5
  9. package/dist/schemas/cartera.js +13 -11
  10. package/dist/schemas/cartera.js.map +1 -1
  11. package/dist/schemas/clientes.d.ts +164 -0
  12. package/dist/schemas/clientes.js +205 -0
  13. package/dist/schemas/clientes.js.map +1 -0
  14. package/dist/schemas/facturas-ventas.d.ts +20 -16
  15. package/dist/schemas/facturas-ventas.js +36 -32
  16. package/dist/schemas/facturas-ventas.js.map +1 -1
  17. package/dist/schemas/localizaciones.d.ts +90 -0
  18. package/dist/schemas/localizaciones.js +145 -0
  19. package/dist/schemas/localizaciones.js.map +1 -0
  20. package/dist/schemas/pedidos-compras.d.ts +8 -6
  21. package/dist/schemas/pedidos-compras.js +8 -6
  22. package/dist/schemas/pedidos-compras.js.map +1 -1
  23. package/dist/server-instructions.js +43 -0
  24. package/dist/server-instructions.js.map +1 -1
  25. package/dist/server.js +5 -3
  26. package/dist/server.js.map +1 -1
  27. package/dist/tools/articulos.d.ts +14 -0
  28. package/dist/tools/articulos.js +183 -0
  29. package/dist/tools/articulos.js.map +1 -0
  30. package/dist/tools/cartera.js +2 -2
  31. package/dist/tools/cartera.js.map +1 -1
  32. package/dist/tools/clientes.d.ts +2 -1
  33. package/dist/tools/clientes.js +63 -2
  34. package/dist/tools/clientes.js.map +1 -1
  35. package/dist/tools/contabilidad.js +7 -7
  36. package/dist/tools/contabilidad.js.map +1 -1
  37. package/dist/tools/contactos-clientes.d.ts +2 -1
  38. package/dist/tools/contactos-clientes.js +58 -4
  39. package/dist/tools/contactos-clientes.js.map +1 -1
  40. package/dist/tools/contratos/cabecera.d.ts +2 -3
  41. package/dist/tools/contratos/cabecera.js.map +1 -1
  42. package/dist/tools/facturas-ventas.js +12 -12
  43. package/dist/tools/facturas-ventas.js.map +1 -1
  44. package/dist/tools/helpers.d.ts +4 -0
  45. package/dist/tools/helpers.js.map +1 -1
  46. package/dist/tools/localizaciones.d.ts +3 -2
  47. package/dist/tools/localizaciones.js +151 -13
  48. package/dist/tools/localizaciones.js.map +1 -1
  49. package/dist/tools/personal.js +13 -17
  50. package/dist/tools/personal.js.map +1 -1
  51. package/dist/tools/prl.js +15 -49
  52. package/dist/tools/prl.js.map +1 -1
  53. package/dist/tools/proveedores.d.ts +2 -2
  54. package/dist/tools/proveedores.js +8 -6
  55. package/dist/tools/proveedores.js.map +1 -1
  56. package/package.json +1 -1
@@ -0,0 +1,205 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Zod schemas (raw shapes) y builders de body para las tools de escritura de
4
+ * Clientes y Contactos de Clientes (módulo pgrl, v2).
5
+ *
6
+ * Convención: nombres amigables en castellano traducidos a los campos nativos
7
+ * del API (VoClientes / VoContactosClientes CC_*). Solo se incluyen en el body
8
+ * los campos definidos. Los campos menos comunes se pasan en
9
+ * `camposAdicionales` con su nombre nativo.
10
+ *
11
+ * Límites de longitud según el spec OpenAPI
12
+ * (https://api-config.freefy.cloud/openapi.json).
13
+ */
14
+ /** Añade `target[key] = value` solo si value !== undefined. */
15
+ function setIf(target, key, value) {
16
+ if (value !== undefined)
17
+ target[key] = value;
18
+ }
19
+ /** Convierte boolean a los flags '1'/'0' de Freemática. */
20
+ function boolFlag(value) {
21
+ return value ? '1' : '0';
22
+ }
23
+ /**
24
+ * Passthrough de campos nativos no expuestos con nombre amigable.
25
+ * Se validan las claves con estilo de columna Freemática (mayúsculas + '_').
26
+ */
27
+ const camposAdicionales = (ejemplo) => z
28
+ .record(z.string().regex(/^[A-Z][A-Z0-9_]*$/, 'Las claves deben ser columnas Freemática (MAYUSCULAS_CON_GUION_BAJO)'), z.union([z.string(), z.number()]))
29
+ .optional()
30
+ .describe(`Campos nativos adicionales del Vo correspondiente (ej: ${ejemplo}). Ver spec OpenAPI para la lista completa.`);
31
+ // ---------------------------------------------------------------------------
32
+ // Clientes (VoClientes, 109 campos)
33
+ // ---------------------------------------------------------------------------
34
+ const clienteOptionalFieldsShape = {
35
+ personaFiscal: z.string().max(200).optional().describe('Nombre fiscal (PERSONA_FISCAL, 200c).'),
36
+ contacto: z.string().max(40).optional().describe('Nombre del contacto (CONTACTO, 40c).'),
37
+ cargo: z.string().max(40).optional().describe('Cargo del contacto (CARGO, 40c).'),
38
+ tipoVia: z.string().max(10).optional().describe('Tipo de vía (TIPO_VIA, 10c). Ej: CL, AV.'),
39
+ nombreVia: z.string().max(40).optional().describe('Nombre de la vía (NOMBRE_VIA, 40c).'),
40
+ numero: z.string().max(10).optional().describe('Número de vía (NUMERO, 10c).'),
41
+ codPoblacion: z.string().max(40).optional().describe('Código de población (COD_POBLACION, 40c).'),
42
+ codPostal: z.string().max(10).optional().describe('Código postal (COD_POSTAL, 10c).'),
43
+ codProvincia: z.string().max(5).optional().describe('Código de provincia (COD_PROVINCIA, 5c).'),
44
+ codPais: z.string().max(3).optional().describe('Código de país (COD_PAIS, 3c).'),
45
+ email: z.string().max(100).optional().describe('Correo electrónico (E_MAIL, 100c).'),
46
+ web: z.string().max(100).optional().describe('Página web (WEB, 100c).'),
47
+ telefono1: z.string().max(15).optional().describe('Teléfono 1 (TELEFONO1, 15c).'),
48
+ telefono2: z.string().max(15).optional().describe('Teléfono 2 (TELEFONO2, 15c).'),
49
+ nombreComercial: z.string().max(40).optional().describe('Nombre comercial (NOMBRECOMERCIAL, 40c).'),
50
+ representante: z.string().max(5).optional().describe('Código del comercial (REPRESENTANTE, 5c).'),
51
+ codTipo: z.string().max(2).optional().describe('Código tipo de cliente (COD_TIPO, 2c).'),
52
+ comentarios: z.string().optional().describe('Comentarios libres (COMENTARIOS).'),
53
+ camposAdicionales: camposAdicionales('COD_TARIFA, COD_ZONA, CREDITO, CMC_LINKEDIN'),
54
+ };
55
+ export const CreateClienteShape = {
56
+ grupoCliente: z.number().int().describe('Código de grupo de cliente (COD_GRUPO_CLI). Requerido.'),
57
+ codCliente: z.string().max(10).describe('Código de cliente (COD_CLI, 10c). Requerido.'),
58
+ nombre: z.string().max(40).describe('Nombre del cliente (NOMBRE_CLI, 40c). Requerido.'),
59
+ nif: z.string().max(15).describe('NIF (15c). Requerido.'),
60
+ tipoImpuesto: z.string().max(4).describe('Tipo de impuesto (TIPO_IMPTO, 4c). Requerido.'),
61
+ divisa: z.string().max(4).describe('Código de divisa (COD_DIVISA, 4c). Ej: EUR. Requerido.'),
62
+ tipoFacturacion: z
63
+ .enum(['D', 'M', 'Q'])
64
+ .describe('Tipo de proceso de facturación (TIPO_FACT): D=Diario, M=Mensual, Q=Quincenal. Requerido.'),
65
+ ...clienteOptionalFieldsShape,
66
+ };
67
+ export const UpdateClienteShape = {
68
+ idReg: z
69
+ .string()
70
+ .min(1)
71
+ .describe('idReg opaco del cliente (campo "idReg" en freematica_list_clientes).'),
72
+ nombre: z.string().max(40).optional().describe('Nombre del cliente (NOMBRE_CLI, 40c).'),
73
+ nif: z.string().max(15).optional().describe('NIF (15c).'),
74
+ tipoImpuesto: z.string().max(4).optional().describe('Tipo de impuesto (TIPO_IMPTO, 4c).'),
75
+ divisa: z.string().max(4).optional().describe('Código de divisa (COD_DIVISA, 4c).'),
76
+ tipoFacturacion: z
77
+ .enum(['D', 'M', 'Q'])
78
+ .optional()
79
+ .describe('Tipo de proceso de facturación (TIPO_FACT): D/M/Q.'),
80
+ ...clienteOptionalFieldsShape,
81
+ };
82
+ /**
83
+ * Construye el idReg de un cliente a partir de sus códigos naturales.
84
+ * Formato verificado contra el API real: Base64("{GRUPO}__{COD}").
85
+ */
86
+ export function buildClienteIdReg(grupoCliente, codCliente) {
87
+ return Buffer.from(`${grupoCliente}__${codCliente}`).toString('base64');
88
+ }
89
+ /** Construye el body VoClientes con los campos definidos. */
90
+ export function buildClienteBody(args) {
91
+ const body = {};
92
+ setIf(body, 'COD_GRUPO_CLI', args.grupoCliente);
93
+ setIf(body, 'COD_CLI', args.codCliente);
94
+ setIf(body, 'NOMBRE_CLI', args.nombre);
95
+ setIf(body, 'NIF', args.nif);
96
+ setIf(body, 'TIPO_IMPTO', args.tipoImpuesto);
97
+ setIf(body, 'COD_DIVISA', args.divisa);
98
+ setIf(body, 'TIPO_FACT', args.tipoFacturacion);
99
+ setIf(body, 'PERSONA_FISCAL', args.personaFiscal);
100
+ setIf(body, 'CONTACTO', args.contacto);
101
+ setIf(body, 'CARGO', args.cargo);
102
+ setIf(body, 'TIPO_VIA', args.tipoVia);
103
+ setIf(body, 'NOMBRE_VIA', args.nombreVia);
104
+ setIf(body, 'NUMERO', args.numero);
105
+ setIf(body, 'COD_POBLACION', args.codPoblacion);
106
+ setIf(body, 'COD_POSTAL', args.codPostal);
107
+ setIf(body, 'COD_PROVINCIA', args.codProvincia);
108
+ setIf(body, 'COD_PAIS', args.codPais);
109
+ setIf(body, 'E_MAIL', args.email);
110
+ setIf(body, 'WEB', args.web);
111
+ setIf(body, 'TELEFONO1', args.telefono1);
112
+ setIf(body, 'TELEFONO2', args.telefono2);
113
+ setIf(body, 'NOMBRECOMERCIAL', args.nombreComercial);
114
+ setIf(body, 'REPRESENTANTE', args.representante);
115
+ setIf(body, 'COD_TIPO', args.codTipo);
116
+ setIf(body, 'COMENTARIOS', args.comentarios);
117
+ if (args.camposAdicionales)
118
+ Object.assign(body, args.camposAdicionales);
119
+ return body;
120
+ }
121
+ // ---------------------------------------------------------------------------
122
+ // Contactos de clientes (VoContactosClientes, campos CC_*)
123
+ // ---------------------------------------------------------------------------
124
+ const contactoOptionalFieldsShape = {
125
+ nombreApellidos: z.string().max(100).optional().describe('Nombre y apellidos (CC_NOM_APELL, 100c).'),
126
+ cargo: z.string().max(40).optional().describe('Cargo (CC_CARGO, 40c).'),
127
+ codCargo: z.string().max(4).optional().describe('Código de cargo (CC_COD_CARGO, 4c). Catálogo cargos-clientes.'),
128
+ telefono: z.string().max(15).optional().describe('Teléfono (CC_TELEFONO, 15c).'),
129
+ movil: z.string().max(15).optional().describe('Móvil (CC_MOBIL, 15c).'),
130
+ email: z.string().max(100).optional().describe('Correo electrónico (CC_EMAIL1, 100c).'),
131
+ nif: z.string().max(15).optional().describe('NIF del contacto (CC_NIF, 15c).'),
132
+ comentarios: z.string().max(1000).optional().describe('Comentarios (CC_COMENTARIOS, 1000c).'),
133
+ contactoPrincipal: z
134
+ .boolean()
135
+ .optional()
136
+ .describe('Contacto principal (CC_CONTACTO_PRINCIPAL): true → "1", false → "0".'),
137
+ decisor: z.boolean().optional().describe('Contacto decisor (CC_DECISOR): true → "1", false → "0".'),
138
+ inactivo: z.boolean().optional().describe('Contacto inactivo (CC_INACTIVO): true → "1", false → "0".'),
139
+ localizacion: z
140
+ .number()
141
+ .int()
142
+ .optional()
143
+ .describe('Código de localización del cliente a la que pertenece (CC_LOCALIZ).'),
144
+ linkedin: z.string().max(200).optional().describe('LinkedIn (CC_LINKEDIN, 200c).'),
145
+ camposAdicionales: camposAdicionales('CC_SALUDO, CC_TRATAMIENTO, CC_MAILING'),
146
+ };
147
+ export const CreateContactoClienteShape = {
148
+ grupoCliente: z.number().int().describe('Código de grupo de cliente (CC_GRUPO_CLI). Requerido.'),
149
+ codCliente: z.string().max(10).describe('Código de cliente (CC_CLI, 10c). Requerido.'),
150
+ ...contactoOptionalFieldsShape,
151
+ };
152
+ export const UpdateContactoClienteShape = {
153
+ idReg: z
154
+ .string()
155
+ .min(1)
156
+ .describe('idReg opaco del contacto (campo "idReg" en freematica_list_contactos_clientes).'),
157
+ ...contactoOptionalFieldsShape,
158
+ };
159
+ /** Construye el body VoContactosClientes con los campos definidos. */
160
+ export function buildContactoClienteBody(args) {
161
+ const body = {};
162
+ setIf(body, 'CC_GRUPO_CLI', args.grupoCliente);
163
+ setIf(body, 'CC_CLI', args.codCliente);
164
+ setIf(body, 'CC_NOM_APELL', args.nombreApellidos);
165
+ setIf(body, 'CC_CARGO', args.cargo);
166
+ setIf(body, 'CC_COD_CARGO', args.codCargo);
167
+ setIf(body, 'CC_TELEFONO', args.telefono);
168
+ setIf(body, 'CC_MOBIL', args.movil);
169
+ setIf(body, 'CC_EMAIL1', args.email);
170
+ setIf(body, 'CC_NIF', args.nif);
171
+ setIf(body, 'CC_COMENTARIOS', args.comentarios);
172
+ if (args.contactoPrincipal !== undefined)
173
+ body['CC_CONTACTO_PRINCIPAL'] = boolFlag(args.contactoPrincipal);
174
+ if (args.decisor !== undefined)
175
+ body['CC_DECISOR'] = boolFlag(args.decisor);
176
+ if (args.inactivo !== undefined)
177
+ body['CC_INACTIVO'] = boolFlag(args.inactivo);
178
+ setIf(body, 'CC_LOCALIZ', args.localizacion);
179
+ setIf(body, 'CC_LINKEDIN', args.linkedin);
180
+ if (args.camposAdicionales)
181
+ Object.assign(body, args.camposAdicionales);
182
+ return body;
183
+ }
184
+ /**
185
+ * Claves de metadatos de presentación que devuelven los GET de Freemática y
186
+ * que no forman parte del Vo de escritura. Se eliminan antes de hacer el
187
+ * merge de un update (fetch + merge + PUT).
188
+ */
189
+ const METADATA_KEYS = ['RowNumber', '_id', '_cellSettings'];
190
+ /**
191
+ * Fusiona el estado actual de un registro (obtenido por GET) con los cambios
192
+ * a aplicar, eliminando los metadatos de presentación.
193
+ *
194
+ * ASUNCIÓN EMPÍRICA: los endpoints PUT de Freemática aceptan el objeto
195
+ * completo devuelto por el GET (mismos nombres de columna). Si en pruebas
196
+ * funcionales el API rechazara algún campo de solo lectura, habría que
197
+ * añadirlo a METADATA_KEYS.
198
+ */
199
+ export function mergeForUpdate(current, changes) {
200
+ const merged = { ...current, ...changes };
201
+ for (const key of METADATA_KEYS)
202
+ delete merged[key];
203
+ return merged;
204
+ }
205
+ //# sourceMappingURL=clientes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientes.js","sourceRoot":"","sources":["../../src/schemas/clientes.ts"],"names":[],"mappings":"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"}
@@ -8,15 +8,19 @@ import { z } from 'zod';
8
8
  * Mapeo de filtros → campos FIQL de Freemática:
9
9
  * | Filtro lógico | Campo FIQL |
10
10
  * |----------------------------|------------------|
11
- * | empresa | FVC_EMP |
12
- * | codCliente | FVC_CODAUX |
13
- * | representante | FVC_CODREP |
14
- * | fechaFacturaDesde | FVC_FECFAC =ge= |
15
- * | fechaFacturaHasta | FVC_FECFAC =le= |
16
- * | serie | FVC_SERFAC |
17
- * | numFactura | FVC_NUMFAC |
18
- * | formaPago | FVC_CODFPAG |
19
- * | traspasadoContabilidad | FVC_TRSCONT |
11
+ * | empresa | FVC_CODEMP |
12
+ * | codCliente | FVC_CODCLI |
13
+ * | representante | FVC_CODREPRES |
14
+ * | fechaFacturaDesde | FVC_FCHFAC =ge= |
15
+ * | fechaFacturaHasta | FVC_FCHFAC =lt= (día siguiente; =le= responde 500) |
16
+ *
17
+ * fechaFacturaDesde y fechaFacturaHasta son EXCLUYENTES entre sí: el API
18
+ * devuelve 0 filas si se combinan dos condiciones de rango sobre el mismo
19
+ * campo (verificado en producción).
20
+ * | serie | FVC_SERIEFRA |
21
+ * | numFactura | FVC_NUMFRA |
22
+ * | formaPago | FVC_FPAGO |
23
+ * | traspasadoContabilidad | FVC_TRASP_CONTAB |
20
24
  * | delegacion | FVC_DELEG |
21
25
  */
22
26
  export declare const ListFacturasCabeceraFiltersSchema: {
@@ -53,9 +57,9 @@ export type ListFacturasCabeceraFilters = {
53
57
  * Mapeo de filtros → campos FIQL de Freemática (prefijo `FVL_`):
54
58
  * | Filtro lógico | Campo FIQL |
55
59
  * |----------------|------------------|
56
- * | codArticulo | FVL_CODART |
57
- * | codFamilia | FVL_CODFAM |
58
- * | codSubfamilia | FVL_CODSFAM |
60
+ * | codArticulo | FVL_CODARTIC |
61
+ * | codFamilia | FVL_COD_FAMILIA |
62
+ * | codSubfamilia | FVL_COD_SUBFAM |
59
63
  * | delegacion | FVL_DELEG |
60
64
  */
61
65
  export declare const ListFacturaLineasFiltersSchema: {
@@ -80,7 +84,7 @@ export type ListFacturaLineasFilters = {
80
84
  * Mapeo de filtros → campos FIQL de Freemática (prefijo `FVI_`):
81
85
  * | Filtro lógico | Campo FIQL |
82
86
  * |----------------|-------------|
83
- * | tipoIva | FVI_TIPIVA |
87
+ * | tipoIva | FVI_TIPO_IVA |
84
88
  */
85
89
  export declare const ListFacturaIvaFiltersSchema: {
86
90
  tipoIva: z.ZodOptional<z.ZodString>;
@@ -98,9 +102,9 @@ export type ListFacturaIvaFilters = {
98
102
  * Mapeo de filtros → campos FIQL de Freemática (prefijo `FVV_`):
99
103
  * | Filtro lógico | Campo FIQL |
100
104
  * |---------------------------|------------------|
101
- * | fechaVencimientoDesde | FVV_FECVCTO =ge= |
102
- * | fechaVencimientoHasta | FVV_FECVCTO =le= |
103
- * | modoPago | FVV_CODMPAG |
105
+ * | fechaVencimientoDesde | FVV_FCH_VTO =ge= |
106
+ * | fechaVencimientoHasta | FVV_FCH_VTO =le= |
107
+ * | modoPago | FVV_MODOPAGO |
104
108
  */
105
109
  export declare const ListFacturaVencimientosFiltersSchema: {
106
110
  fechaVencimientoDesde: z.ZodOptional<z.ZodString>;
@@ -9,15 +9,19 @@ import { PaginationSchema } from './pagination.js';
9
9
  * Mapeo de filtros → campos FIQL de Freemática:
10
10
  * | Filtro lógico | Campo FIQL |
11
11
  * |----------------------------|------------------|
12
- * | empresa | FVC_EMP |
13
- * | codCliente | FVC_CODAUX |
14
- * | representante | FVC_CODREP |
15
- * | fechaFacturaDesde | FVC_FECFAC =ge= |
16
- * | fechaFacturaHasta | FVC_FECFAC =le= |
17
- * | serie | FVC_SERFAC |
18
- * | numFactura | FVC_NUMFAC |
19
- * | formaPago | FVC_CODFPAG |
20
- * | traspasadoContabilidad | FVC_TRSCONT |
12
+ * | empresa | FVC_CODEMP |
13
+ * | codCliente | FVC_CODCLI |
14
+ * | representante | FVC_CODREPRES |
15
+ * | fechaFacturaDesde | FVC_FCHFAC =ge= |
16
+ * | fechaFacturaHasta | FVC_FCHFAC =lt= (día siguiente; =le= responde 500) |
17
+ *
18
+ * fechaFacturaDesde y fechaFacturaHasta son EXCLUYENTES entre sí: el API
19
+ * devuelve 0 filas si se combinan dos condiciones de rango sobre el mismo
20
+ * campo (verificado en producción).
21
+ * | serie | FVC_SERIEFRA |
22
+ * | numFactura | FVC_NUMFRA |
23
+ * | formaPago | FVC_FPAGO |
24
+ * | traspasadoContabilidad | FVC_TRASP_CONTAB |
21
25
  * | delegacion | FVC_DELEG |
22
26
  */
23
27
  export const ListFacturasCabeceraFiltersSchema = {
@@ -26,46 +30,46 @@ export const ListFacturasCabeceraFiltersSchema = {
26
30
  .string()
27
31
  .min(1)
28
32
  .optional()
29
- .describe('Código de empresa Freemática (FVC_EMP). Ej.: "1".'),
33
+ .describe('Código de empresa Freemática (FVC_CODEMP). Ej.: "1".'),
30
34
  codCliente: z
31
35
  .string()
32
36
  .min(1)
33
37
  .optional()
34
- .describe('Código natural del cliente facturado (FVC_CODAUX).'),
38
+ .describe('Código natural del cliente facturado (FVC_CODCLI).'),
35
39
  representante: z
36
40
  .string()
37
41
  .min(1)
38
42
  .optional()
39
- .describe('Código del representante/comercial (FVC_CODREP).'),
43
+ .describe('Código del representante/comercial (FVC_CODREPRES).'),
40
44
  fechaFacturaDesde: z
41
45
  .string()
42
46
  .regex(/^\d{4}-\d{2}-\d{2}$/, 'Debe ser una fecha en formato ISO 8601 YYYY-MM-DD')
43
47
  .optional()
44
- .describe('Fecha inicio de la factura (FVC_FECFAC). Formato YYYY-MM-DD. Inclusive.'),
48
+ .describe('Fecha inicio de la factura (FVC_FCHFAC). Formato YYYY-MM-DD. Inclusive. EXCLUYENTE con fechaFacturaHasta: usa solo uno de los dos por consulta (limitación del API).'),
45
49
  fechaFacturaHasta: z
46
50
  .string()
47
51
  .regex(/^\d{4}-\d{2}-\d{2}$/, 'Debe ser una fecha en formato ISO 8601 YYYY-MM-DD')
48
52
  .optional()
49
- .describe('Fecha fin de la factura (FVC_FECFAC). Formato YYYY-MM-DD. Inclusive.'),
53
+ .describe('Fecha fin de la factura (FVC_FCHFAC). Formato YYYY-MM-DD. Inclusive. EXCLUYENTE con fechaFacturaDesde: usa solo uno de los dos por consulta (limitación del API).'),
50
54
  serie: z
51
55
  .string()
52
56
  .min(1)
53
57
  .optional()
54
- .describe('Serie de facturación (FVC_SERFAC). Ej.: "A", "B".'),
58
+ .describe('Serie de facturación (FVC_SERIEFRA). Ej.: "A", "B".'),
55
59
  numFactura: z
56
60
  .string()
57
61
  .min(1)
58
62
  .optional()
59
- .describe('Número de factura exacto (FVC_NUMFAC).'),
63
+ .describe('Número de factura exacto (FVC_NUMFRA).'),
60
64
  formaPago: z
61
65
  .string()
62
66
  .min(1)
63
67
  .optional()
64
- .describe('Código de forma de pago (FVC_CODFPAG). Ej.: "REC", "TRF".'),
68
+ .describe('Código de forma de pago (FVC_FPAGO). Ej.: "REC", "TRF".'),
65
69
  traspasadoContabilidad: z
66
70
  .boolean()
67
71
  .optional()
68
- .describe('Si true, filtra facturas ya traspasadas a contabilidad (FVC_TRSCONT). Si false, las no traspasadas.'),
72
+ .describe('Si true, filtra facturas ya traspasadas a contabilidad (FVC_TRASP_CONTAB). Si false, las no traspasadas.'),
69
73
  delegacion: z
70
74
  .string()
71
75
  .min(1)
@@ -78,9 +82,9 @@ export const ListFacturasCabeceraFiltersSchema = {
78
82
  * Mapeo de filtros → campos FIQL de Freemática (prefijo `FVL_`):
79
83
  * | Filtro lógico | Campo FIQL |
80
84
  * |----------------|------------------|
81
- * | codArticulo | FVL_CODART |
82
- * | codFamilia | FVL_CODFAM |
83
- * | codSubfamilia | FVL_CODSFAM |
85
+ * | codArticulo | FVL_CODARTIC |
86
+ * | codFamilia | FVL_COD_FAMILIA |
87
+ * | codSubfamilia | FVL_COD_SUBFAM |
84
88
  * | delegacion | FVL_DELEG |
85
89
  */
86
90
  export const ListFacturaLineasFiltersSchema = {
@@ -89,17 +93,17 @@ export const ListFacturaLineasFiltersSchema = {
89
93
  .string()
90
94
  .min(1)
91
95
  .optional()
92
- .describe('Código de artículo (FVL_CODART).'),
96
+ .describe('Código de artículo (FVL_CODARTIC).'),
93
97
  codFamilia: z
94
98
  .string()
95
99
  .min(1)
96
100
  .optional()
97
- .describe('Código de familia de artículo (FVL_CODFAM).'),
101
+ .describe('Código de familia de artículo (FVL_COD_FAMILIA).'),
98
102
  codSubfamilia: z
99
103
  .string()
100
104
  .min(1)
101
105
  .optional()
102
- .describe('Código de subfamilia de artículo (FVL_CODSFAM).'),
106
+ .describe('Código de subfamilia de artículo (FVL_COD_SUBFAM).'),
103
107
  delegacion: z
104
108
  .string()
105
109
  .min(1)
@@ -112,7 +116,7 @@ export const ListFacturaLineasFiltersSchema = {
112
116
  * Mapeo de filtros → campos FIQL de Freemática (prefijo `FVI_`):
113
117
  * | Filtro lógico | Campo FIQL |
114
118
  * |----------------|-------------|
115
- * | tipoIva | FVI_TIPIVA |
119
+ * | tipoIva | FVI_TIPO_IVA |
116
120
  */
117
121
  export const ListFacturaIvaFiltersSchema = {
118
122
  ...PaginationSchema,
@@ -120,7 +124,7 @@ export const ListFacturaIvaFiltersSchema = {
120
124
  .string()
121
125
  .min(1)
122
126
  .optional()
123
- .describe('Tipo de IVA (FVI_TIPIVA). Ej.: "21", "10", "4".'),
127
+ .describe('Tipo de IVA (FVI_TIPO_IVA). Ej.: "21", "10", "4".'),
124
128
  };
125
129
  /**
126
130
  * Filtros tipados para `freematica_list_factura_vencimientos`.
@@ -128,9 +132,9 @@ export const ListFacturaIvaFiltersSchema = {
128
132
  * Mapeo de filtros → campos FIQL de Freemática (prefijo `FVV_`):
129
133
  * | Filtro lógico | Campo FIQL |
130
134
  * |---------------------------|------------------|
131
- * | fechaVencimientoDesde | FVV_FECVCTO =ge= |
132
- * | fechaVencimientoHasta | FVV_FECVCTO =le= |
133
- * | modoPago | FVV_CODMPAG |
135
+ * | fechaVencimientoDesde | FVV_FCH_VTO =ge= |
136
+ * | fechaVencimientoHasta | FVV_FCH_VTO =le= |
137
+ * | modoPago | FVV_MODOPAGO |
134
138
  */
135
139
  export const ListFacturaVencimientosFiltersSchema = {
136
140
  ...PaginationSchema,
@@ -138,16 +142,16 @@ export const ListFacturaVencimientosFiltersSchema = {
138
142
  .string()
139
143
  .regex(/^\d{4}-\d{2}-\d{2}$/, 'Debe ser una fecha en formato ISO 8601 YYYY-MM-DD')
140
144
  .optional()
141
- .describe('Fecha inicio de vencimiento (FVV_FECVCTO). Formato YYYY-MM-DD. Inclusive.'),
145
+ .describe('Fecha inicio de vencimiento (FVV_FCH_VTO). Formato YYYY-MM-DD. Inclusive.'),
142
146
  fechaVencimientoHasta: z
143
147
  .string()
144
148
  .regex(/^\d{4}-\d{2}-\d{2}$/, 'Debe ser una fecha en formato ISO 8601 YYYY-MM-DD')
145
149
  .optional()
146
- .describe('Fecha fin de vencimiento (FVV_FECVCTO). Formato YYYY-MM-DD. Inclusive.'),
150
+ .describe('Fecha fin de vencimiento (FVV_FCH_VTO). Formato YYYY-MM-DD. Inclusive.'),
147
151
  modoPago: z
148
152
  .string()
149
153
  .min(1)
150
154
  .optional()
151
- .describe('Código de modo de pago (FVV_CODMPAG). Ej.: "TRF", "CHQ".'),
155
+ .describe('Código de modo de pago (FVV_MODOPAGO). Ej.: "TRF", "CHQ".'),
152
156
  };
153
157
  //# sourceMappingURL=facturas-ventas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"facturas-ventas.js","sourceRoot":"","sources":["../../src/schemas/facturas-ventas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"facturas-ventas.js","sourceRoot":"","sources":["../../src/schemas/facturas-ventas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { z } from 'zod';
2
+ export type LocalizacionTipo = 'cobro' | 'envio' | 'factura' | 'servicio';
3
+ export declare const LOC_TIPOS: LocalizacionTipo[];
4
+ interface LocFieldMap {
5
+ /** Columna del código de localización (requerida por el API). */
6
+ codField: string;
7
+ /** Columna del nombre/denominación. */
8
+ nombreField: string;
9
+ /** Columna del domicilio. */
10
+ domicilioField: string;
11
+ /** Columna de la persona de contacto. */
12
+ contactoField: string;
13
+ /** ¿El API exige el nombre en el alta? */
14
+ nombreRequerido: boolean;
15
+ /** Path del recurso v2 (list/create; update añade /{idReg}). */
16
+ path: string;
17
+ /** Path del GET singular usado en el fetch+merge del update. */
18
+ getPath: string;
19
+ /** Sufijo del nombre de tool: freematica_*_localizacion_<sufijo>_cliente. */
20
+ toolSuffix: string;
21
+ }
22
+ export declare const LOC_FIELD_MAP: Record<LocalizacionTipo, LocFieldMap>;
23
+ /**
24
+ * Shape del alta de localización. `formaPago` solo lo exige el API en el tipo
25
+ * `cobro`; para el resto es ignorable (se valida en el handler).
26
+ */
27
+ export declare const CreateLocalizacionClienteShape: {
28
+ codPais: z.ZodOptional<z.ZodNumber>;
29
+ codProvincia: z.ZodOptional<z.ZodString>;
30
+ codPoblacion: z.ZodOptional<z.ZodString>;
31
+ codPostal: z.ZodOptional<z.ZodString>;
32
+ domicilio: z.ZodOptional<z.ZodString>;
33
+ email: z.ZodOptional<z.ZodString>;
34
+ telefono1: z.ZodOptional<z.ZodString>;
35
+ telefono2: z.ZodOptional<z.ZodString>;
36
+ contacto: z.ZodOptional<z.ZodString>;
37
+ camposAdicionales: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
38
+ tipo: z.ZodEnum<{
39
+ cobro: "cobro";
40
+ envio: "envio";
41
+ factura: "factura";
42
+ servicio: "servicio";
43
+ }>;
44
+ grupoCliente: z.ZodNumber;
45
+ codCliente: z.ZodString;
46
+ codLocalizacion: z.ZodNumber;
47
+ nombre: z.ZodOptional<z.ZodString>;
48
+ formaPago: z.ZodOptional<z.ZodString>;
49
+ };
50
+ export declare const UpdateLocalizacionClienteShape: {
51
+ codPais: z.ZodOptional<z.ZodNumber>;
52
+ codProvincia: z.ZodOptional<z.ZodString>;
53
+ codPoblacion: z.ZodOptional<z.ZodString>;
54
+ codPostal: z.ZodOptional<z.ZodString>;
55
+ domicilio: z.ZodOptional<z.ZodString>;
56
+ email: z.ZodOptional<z.ZodString>;
57
+ telefono1: z.ZodOptional<z.ZodString>;
58
+ telefono2: z.ZodOptional<z.ZodString>;
59
+ contacto: z.ZodOptional<z.ZodString>;
60
+ camposAdicionales: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
61
+ tipo: z.ZodEnum<{
62
+ cobro: "cobro";
63
+ envio: "envio";
64
+ factura: "factura";
65
+ servicio: "servicio";
66
+ }>;
67
+ idReg: z.ZodString;
68
+ nombre: z.ZodOptional<z.ZodString>;
69
+ formaPago: z.ZodOptional<z.ZodString>;
70
+ };
71
+ export type LocalizacionClienteFields = {
72
+ grupoCliente?: number;
73
+ codCliente?: string;
74
+ codLocalizacion?: number;
75
+ nombre?: string;
76
+ formaPago?: string;
77
+ codPais?: number;
78
+ codProvincia?: string;
79
+ codPoblacion?: string;
80
+ codPostal?: string;
81
+ domicilio?: string;
82
+ email?: string;
83
+ telefono1?: string;
84
+ telefono2?: string;
85
+ contacto?: string;
86
+ camposAdicionales?: Record<string, string | number>;
87
+ };
88
+ /** Construye el body del Vo de localización correspondiente al tipo. */
89
+ export declare function buildLocalizacionClienteBody(tipo: LocalizacionTipo, args: LocalizacionClienteFields): Record<string, unknown>;
90
+ export {};