@nubiia/mcp-freematica 0.6.4 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -12
- package/dist/clients/freematica-client.d.ts +264 -1
- package/dist/clients/freematica-client.js +387 -1
- package/dist/clients/freematica-client.js.map +1 -1
- package/dist/config.d.ts +22 -1
- package/dist/config.js +29 -1
- package/dist/config.js.map +1 -1
- package/dist/schemas/clientes.d.ts +164 -0
- package/dist/schemas/clientes.js +205 -0
- package/dist/schemas/clientes.js.map +1 -0
- package/dist/schemas/contratos.d.ts +268 -5
- package/dist/schemas/contratos.js +402 -1
- package/dist/schemas/contratos.js.map +1 -1
- package/dist/schemas/localizaciones.d.ts +90 -0
- package/dist/schemas/localizaciones.js +145 -0
- package/dist/schemas/localizaciones.js.map +1 -0
- package/dist/server-instructions.js +68 -1
- package/dist/server-instructions.js.map +1 -1
- package/dist/server.d.ts +6 -0
- package/dist/server.js +5 -5
- package/dist/server.js.map +1 -1
- package/dist/tools/clientes.d.ts +2 -1
- package/dist/tools/clientes.js +63 -2
- package/dist/tools/clientes.js.map +1 -1
- package/dist/tools/contactos-clientes.d.ts +2 -1
- package/dist/tools/contactos-clientes.js +58 -4
- package/dist/tools/contactos-clientes.js.map +1 -1
- package/dist/tools/contratos/cabecera.d.ts +6 -0
- package/dist/tools/contratos/cabecera.js +128 -0
- package/dist/tools/contratos/cabecera.js.map +1 -0
- package/dist/tools/contratos/index.d.ts +21 -0
- package/dist/tools/contratos/index.js +31 -0
- package/dist/tools/contratos/index.js.map +1 -0
- package/dist/tools/contratos/materiales.d.ts +4 -0
- package/dist/tools/{contratos.js → contratos/materiales.js} +5 -11
- package/dist/tools/contratos/materiales.js.map +1 -0
- package/dist/tools/contratos/opcionales.d.ts +5 -0
- package/dist/tools/contratos/opcionales.js +106 -0
- package/dist/tools/contratos/opcionales.js.map +1 -0
- package/dist/tools/contratos/servicios.d.ts +5 -0
- package/dist/tools/contratos/servicios.js +215 -0
- package/dist/tools/contratos/servicios.js.map +1 -0
- package/dist/tools/helpers.d.ts +4 -0
- package/dist/tools/helpers.js.map +1 -1
- package/dist/tools/localizaciones.d.ts +2 -1
- package/dist/tools/localizaciones.js +149 -2
- package/dist/tools/localizaciones.js.map +1 -1
- package/dist/transports/http.d.ts +2 -0
- package/dist/transports/http.js +3 -1
- package/dist/transports/http.js.map +1 -1
- package/dist/transports/stdio.d.ts +2 -0
- package/dist/transports/stdio.js +3 -1
- package/dist/transports/stdio.js.map +1 -1
- package/dist/types/contratos.d.ts +29 -0
- package/dist/utils/idreg.d.ts +37 -0
- package/dist/utils/idreg.js +52 -0
- package/dist/utils/idreg.js.map +1 -0
- package/package.json +1 -1
- package/dist/tools/contratos.d.ts +0 -10
- package/dist/tools/contratos.js.map +0 -1
package/dist/config.js
CHANGED
|
@@ -74,6 +74,23 @@ const HardeningConfigSchema = z.object({
|
|
|
74
74
|
.max(500)
|
|
75
75
|
.default(10),
|
|
76
76
|
});
|
|
77
|
+
/**
|
|
78
|
+
* Configuración de operaciones de escritura.
|
|
79
|
+
*
|
|
80
|
+
* Por defecto el servidor es de solo lectura: las tools de creación y
|
|
81
|
+
* actualización (freematica_create_* / freematica_update_*) NO se registran.
|
|
82
|
+
* Para habilitarlas hay que establecer FREEMATICA_ENABLE_WRITES=true de forma
|
|
83
|
+
* explícita en el entorno del despliegue.
|
|
84
|
+
*
|
|
85
|
+
* Nota: se parsea como enum de strings (no z.coerce.boolean()) porque
|
|
86
|
+
* `z.coerce.boolean()` evalúa "false" como truthy.
|
|
87
|
+
*/
|
|
88
|
+
const WritesConfigSchema = z.object({
|
|
89
|
+
FREEMATICA_ENABLE_WRITES: z
|
|
90
|
+
.enum(['true', 'false', '1', '0'])
|
|
91
|
+
.default('false')
|
|
92
|
+
.transform((v) => v === 'true' || v === '1'),
|
|
93
|
+
});
|
|
77
94
|
function formatZodError(err) {
|
|
78
95
|
const issues = err.issues
|
|
79
96
|
.map((i) => ` - ${i.path.join('.')}: ${i.message}`)
|
|
@@ -99,7 +116,18 @@ export function loadHardeningConfig() {
|
|
|
99
116
|
throw new Error(formatZodError(result.error));
|
|
100
117
|
return result.data;
|
|
101
118
|
}
|
|
119
|
+
export function loadWritesConfig() {
|
|
120
|
+
const result = WritesConfigSchema.safeParse(process.env);
|
|
121
|
+
if (!result.success)
|
|
122
|
+
throw new Error(formatZodError(result.error));
|
|
123
|
+
return result.data;
|
|
124
|
+
}
|
|
102
125
|
export function loadConfig() {
|
|
103
|
-
return {
|
|
126
|
+
return {
|
|
127
|
+
...loadAuthConfig(),
|
|
128
|
+
...loadHttpConfig(),
|
|
129
|
+
...loadHardeningConfig(),
|
|
130
|
+
...loadWritesConfig(),
|
|
131
|
+
};
|
|
104
132
|
}
|
|
105
133
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,mBAAmB,EAAE,CAAC;SACnB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,oDAAoD,CAAC;IAChE,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACjE,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;CAC7C,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC;;;OAGG;IACH,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAErF;;;;OAIG;IACH,sBAAsB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAEzE;;;;OAIG;IACH,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC1D,OAAO,CAAC,MAAM,CAAC;IAElB;;;OAGG;IACH,oCAAoC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAExF;;;;OAIG;IACH,qCAAqC,EAAE,CAAC,CAAC,MAAM;SAC5C,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,IAAI,CAAC;SACT,GAAG,CAAC,SAAS,CAAC;SACd,OAAO,CAAC,MAAM,CAAC;IAElB;;;;;;;;;;OAUG;IACH,+BAA+B,EAAE,CAAC,CAAC,MAAM;SACtC,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,EAAE,CAAC;CACf,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const CreateClienteShape: {
|
|
3
|
+
personaFiscal: z.ZodOptional<z.ZodString>;
|
|
4
|
+
contacto: z.ZodOptional<z.ZodString>;
|
|
5
|
+
cargo: z.ZodOptional<z.ZodString>;
|
|
6
|
+
tipoVia: z.ZodOptional<z.ZodString>;
|
|
7
|
+
nombreVia: z.ZodOptional<z.ZodString>;
|
|
8
|
+
numero: z.ZodOptional<z.ZodString>;
|
|
9
|
+
codPoblacion: z.ZodOptional<z.ZodString>;
|
|
10
|
+
codPostal: z.ZodOptional<z.ZodString>;
|
|
11
|
+
codProvincia: z.ZodOptional<z.ZodString>;
|
|
12
|
+
codPais: z.ZodOptional<z.ZodString>;
|
|
13
|
+
email: z.ZodOptional<z.ZodString>;
|
|
14
|
+
web: z.ZodOptional<z.ZodString>;
|
|
15
|
+
telefono1: z.ZodOptional<z.ZodString>;
|
|
16
|
+
telefono2: z.ZodOptional<z.ZodString>;
|
|
17
|
+
nombreComercial: z.ZodOptional<z.ZodString>;
|
|
18
|
+
representante: z.ZodOptional<z.ZodString>;
|
|
19
|
+
codTipo: z.ZodOptional<z.ZodString>;
|
|
20
|
+
comentarios: z.ZodOptional<z.ZodString>;
|
|
21
|
+
camposAdicionales: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
22
|
+
grupoCliente: z.ZodNumber;
|
|
23
|
+
codCliente: z.ZodString;
|
|
24
|
+
nombre: z.ZodString;
|
|
25
|
+
nif: z.ZodString;
|
|
26
|
+
tipoImpuesto: z.ZodString;
|
|
27
|
+
divisa: z.ZodString;
|
|
28
|
+
tipoFacturacion: z.ZodEnum<{
|
|
29
|
+
D: "D";
|
|
30
|
+
M: "M";
|
|
31
|
+
Q: "Q";
|
|
32
|
+
}>;
|
|
33
|
+
};
|
|
34
|
+
export declare const UpdateClienteShape: {
|
|
35
|
+
personaFiscal: z.ZodOptional<z.ZodString>;
|
|
36
|
+
contacto: z.ZodOptional<z.ZodString>;
|
|
37
|
+
cargo: z.ZodOptional<z.ZodString>;
|
|
38
|
+
tipoVia: z.ZodOptional<z.ZodString>;
|
|
39
|
+
nombreVia: z.ZodOptional<z.ZodString>;
|
|
40
|
+
numero: z.ZodOptional<z.ZodString>;
|
|
41
|
+
codPoblacion: z.ZodOptional<z.ZodString>;
|
|
42
|
+
codPostal: z.ZodOptional<z.ZodString>;
|
|
43
|
+
codProvincia: z.ZodOptional<z.ZodString>;
|
|
44
|
+
codPais: z.ZodOptional<z.ZodString>;
|
|
45
|
+
email: z.ZodOptional<z.ZodString>;
|
|
46
|
+
web: z.ZodOptional<z.ZodString>;
|
|
47
|
+
telefono1: z.ZodOptional<z.ZodString>;
|
|
48
|
+
telefono2: z.ZodOptional<z.ZodString>;
|
|
49
|
+
nombreComercial: z.ZodOptional<z.ZodString>;
|
|
50
|
+
representante: z.ZodOptional<z.ZodString>;
|
|
51
|
+
codTipo: z.ZodOptional<z.ZodString>;
|
|
52
|
+
comentarios: z.ZodOptional<z.ZodString>;
|
|
53
|
+
camposAdicionales: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
54
|
+
idReg: z.ZodString;
|
|
55
|
+
nombre: z.ZodOptional<z.ZodString>;
|
|
56
|
+
nif: z.ZodOptional<z.ZodString>;
|
|
57
|
+
tipoImpuesto: z.ZodOptional<z.ZodString>;
|
|
58
|
+
divisa: z.ZodOptional<z.ZodString>;
|
|
59
|
+
tipoFacturacion: z.ZodOptional<z.ZodEnum<{
|
|
60
|
+
D: "D";
|
|
61
|
+
M: "M";
|
|
62
|
+
Q: "Q";
|
|
63
|
+
}>>;
|
|
64
|
+
};
|
|
65
|
+
export type ClienteFields = {
|
|
66
|
+
grupoCliente?: number;
|
|
67
|
+
codCliente?: string;
|
|
68
|
+
nombre?: string;
|
|
69
|
+
nif?: string;
|
|
70
|
+
tipoImpuesto?: string;
|
|
71
|
+
divisa?: string;
|
|
72
|
+
tipoFacturacion?: 'D' | 'M' | 'Q';
|
|
73
|
+
personaFiscal?: string;
|
|
74
|
+
contacto?: string;
|
|
75
|
+
cargo?: string;
|
|
76
|
+
tipoVia?: string;
|
|
77
|
+
nombreVia?: string;
|
|
78
|
+
numero?: string;
|
|
79
|
+
codPoblacion?: string;
|
|
80
|
+
codPostal?: string;
|
|
81
|
+
codProvincia?: string;
|
|
82
|
+
codPais?: string;
|
|
83
|
+
email?: string;
|
|
84
|
+
web?: string;
|
|
85
|
+
telefono1?: string;
|
|
86
|
+
telefono2?: string;
|
|
87
|
+
nombreComercial?: string;
|
|
88
|
+
representante?: string;
|
|
89
|
+
codTipo?: string;
|
|
90
|
+
comentarios?: string;
|
|
91
|
+
camposAdicionales?: Record<string, string | number>;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Construye el idReg de un cliente a partir de sus códigos naturales.
|
|
95
|
+
* Formato verificado contra el API real: Base64("{GRUPO}__{COD}").
|
|
96
|
+
*/
|
|
97
|
+
export declare function buildClienteIdReg(grupoCliente: number, codCliente: string): string;
|
|
98
|
+
/** Construye el body VoClientes con los campos definidos. */
|
|
99
|
+
export declare function buildClienteBody(args: ClienteFields): Record<string, unknown>;
|
|
100
|
+
export declare const CreateContactoClienteShape: {
|
|
101
|
+
nombreApellidos: z.ZodOptional<z.ZodString>;
|
|
102
|
+
cargo: z.ZodOptional<z.ZodString>;
|
|
103
|
+
codCargo: z.ZodOptional<z.ZodString>;
|
|
104
|
+
telefono: z.ZodOptional<z.ZodString>;
|
|
105
|
+
movil: z.ZodOptional<z.ZodString>;
|
|
106
|
+
email: z.ZodOptional<z.ZodString>;
|
|
107
|
+
nif: z.ZodOptional<z.ZodString>;
|
|
108
|
+
comentarios: z.ZodOptional<z.ZodString>;
|
|
109
|
+
contactoPrincipal: z.ZodOptional<z.ZodBoolean>;
|
|
110
|
+
decisor: z.ZodOptional<z.ZodBoolean>;
|
|
111
|
+
inactivo: z.ZodOptional<z.ZodBoolean>;
|
|
112
|
+
localizacion: z.ZodOptional<z.ZodNumber>;
|
|
113
|
+
linkedin: z.ZodOptional<z.ZodString>;
|
|
114
|
+
camposAdicionales: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
115
|
+
grupoCliente: z.ZodNumber;
|
|
116
|
+
codCliente: z.ZodString;
|
|
117
|
+
};
|
|
118
|
+
export declare const UpdateContactoClienteShape: {
|
|
119
|
+
nombreApellidos: z.ZodOptional<z.ZodString>;
|
|
120
|
+
cargo: z.ZodOptional<z.ZodString>;
|
|
121
|
+
codCargo: z.ZodOptional<z.ZodString>;
|
|
122
|
+
telefono: z.ZodOptional<z.ZodString>;
|
|
123
|
+
movil: z.ZodOptional<z.ZodString>;
|
|
124
|
+
email: z.ZodOptional<z.ZodString>;
|
|
125
|
+
nif: z.ZodOptional<z.ZodString>;
|
|
126
|
+
comentarios: z.ZodOptional<z.ZodString>;
|
|
127
|
+
contactoPrincipal: z.ZodOptional<z.ZodBoolean>;
|
|
128
|
+
decisor: z.ZodOptional<z.ZodBoolean>;
|
|
129
|
+
inactivo: z.ZodOptional<z.ZodBoolean>;
|
|
130
|
+
localizacion: z.ZodOptional<z.ZodNumber>;
|
|
131
|
+
linkedin: z.ZodOptional<z.ZodString>;
|
|
132
|
+
camposAdicionales: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
133
|
+
idReg: z.ZodString;
|
|
134
|
+
};
|
|
135
|
+
export type ContactoClienteFields = {
|
|
136
|
+
grupoCliente?: number;
|
|
137
|
+
codCliente?: string;
|
|
138
|
+
nombreApellidos?: string;
|
|
139
|
+
cargo?: string;
|
|
140
|
+
codCargo?: string;
|
|
141
|
+
telefono?: string;
|
|
142
|
+
movil?: string;
|
|
143
|
+
email?: string;
|
|
144
|
+
nif?: string;
|
|
145
|
+
comentarios?: string;
|
|
146
|
+
contactoPrincipal?: boolean;
|
|
147
|
+
decisor?: boolean;
|
|
148
|
+
inactivo?: boolean;
|
|
149
|
+
localizacion?: number;
|
|
150
|
+
linkedin?: string;
|
|
151
|
+
camposAdicionales?: Record<string, string | number>;
|
|
152
|
+
};
|
|
153
|
+
/** Construye el body VoContactosClientes con los campos definidos. */
|
|
154
|
+
export declare function buildContactoClienteBody(args: ContactoClienteFields): Record<string, unknown>;
|
|
155
|
+
/**
|
|
156
|
+
* Fusiona el estado actual de un registro (obtenido por GET) con los cambios
|
|
157
|
+
* a aplicar, eliminando los metadatos de presentación.
|
|
158
|
+
*
|
|
159
|
+
* ASUNCIÓN EMPÍRICA: los endpoints PUT de Freemática aceptan el objeto
|
|
160
|
+
* completo devuelto por el GET (mismos nombres de columna). Si en pruebas
|
|
161
|
+
* funcionales el API rechazara algún campo de solo lectura, habría que
|
|
162
|
+
* añadirlo a METADATA_KEYS.
|
|
163
|
+
*/
|
|
164
|
+
export declare function mergeForUpdate(current: Record<string, unknown>, changes: Record<string, unknown>): Record<string, unknown>;
|
|
@@ -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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"}
|