@ramiidv/arca-empleados 0.2.0 → 0.3.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 +149 -357
- package/dist/constants.d.ts +55 -313
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +54 -510
- package/dist/constants.js.map +1 -1
- package/dist/errors.d.ts +30 -7
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +21 -10
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +8 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -20
- package/dist/index.js.map +1 -1
- package/dist/ingreso-masivo.d.ts +63 -0
- package/dist/ingreso-masivo.d.ts.map +1 -0
- package/dist/ingreso-masivo.js +215 -0
- package/dist/ingreso-masivo.js.map +1 -0
- package/dist/serializer.d.ts +51 -57
- package/dist/serializer.d.ts.map +1 -1
- package/dist/serializer.js +292 -269
- package/dist/serializer.js.map +1 -1
- package/dist/types.d.ts +127 -193
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +1 -1
- package/dist/validators.d.ts +22 -31
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +77 -229
- package/dist/validators.js.map +1 -1
- package/llms.txt +49 -249
- package/package.json +12 -9
- package/dist/f935-builder.d.ts +0 -91
- package/dist/f935-builder.d.ts.map +0 -1
- package/dist/f935-builder.js +0 -246
- package/dist/f935-builder.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,379 +1,171 @@
|
|
|
1
|
-
# @ramiidv/arca-empleados
|
|
1
|
+
# @ramiidv/arca-empleados
|
|
2
2
|
|
|
3
|
-
SDK de TypeScript
|
|
3
|
+
SDK de TypeScript que genera el archivo TXT de **"Ingreso masivo de datos – Relaciones laborales"** del
|
|
4
|
+
servicio **Simplificación Registral** de ARCA (ex AFIP): altas, bajas y modificaciones de relaciones
|
|
5
|
+
laborales en registros de ancho fijo de 130 posiciones.
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
- No hace llamadas a servicios web: ARCA no expone un web service para esto. El archivo se sube a mano
|
|
8
|
+
en Simplificación Registral → Relaciones laborales → Carga Masiva → Nuevo → Cargar Archivo → Enviar.
|
|
9
|
+
- Fuente del formato: [Manual de Ayuda de Simplificación Registral (ARCA, feb. 2025), pág. 24](https://www.arca.gob.ar/simplificacionregistral/ayuda/documentos/SR_Manual-de-Ayuda_20250218_definitivo.pdf).
|
|
6
10
|
|
|
7
|
-
|
|
11
|
+
> **¿Y el F.935?** Las versiones 0.1/0.2 de este paquete hablaban de "archivos F935" con registros
|
|
12
|
+
> `00`–`05` separados por `|`. Ese formato no existe: el F.935 era el archivo encriptado que generaba
|
|
13
|
+
> el viejo aplicativo "Mi Simplificación – Ingreso Masivo de Datos v2.0", que ya no se usa. El formato
|
|
14
|
+
> vigente es el TXT de ancho fijo que describe el manual, y es el que genera la versión 0.3.0.
|
|
8
15
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
## Instalacion
|
|
16
|
+
## Instalación
|
|
12
17
|
|
|
13
18
|
```bash
|
|
14
|
-
npm install @ramiidv/arca-empleados
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Inicio rapido
|
|
18
|
-
|
|
19
|
-
```ts
|
|
20
|
-
import { writeFileSync } from 'node:fs';
|
|
21
|
-
import {
|
|
22
|
-
ArcaEmpleados,
|
|
23
|
-
ModalidadContratacion,
|
|
24
|
-
Provincia,
|
|
25
|
-
} from '@ramiidv/arca-empleados-sdk';
|
|
26
|
-
|
|
27
|
-
const empleados = new ArcaEmpleados({
|
|
28
|
-
cuitEmpleador: '30-71234567-1',
|
|
29
|
-
razonSocial: 'Mi Empresa S.A.',
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
empleados.alta({
|
|
33
|
-
cuil: '20-12345678-6',
|
|
34
|
-
fechaInicio: new Date(2024, 2, 1),
|
|
35
|
-
modalidadContratacion: ModalidadContratacion.TIEMPO_COMPLETO_INDETERMINADO,
|
|
36
|
-
obraSocial: '100100',
|
|
37
|
-
actividadEconomica: '620100',
|
|
38
|
-
domicilioExplotacion: {
|
|
39
|
-
calle: 'Av. Corrientes',
|
|
40
|
-
numero: '1234',
|
|
41
|
-
localidad: 'CABA',
|
|
42
|
-
codigoPostal: '1043',
|
|
43
|
-
provincia: Provincia.CAPITAL_FEDERAL,
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
const resultado = empleados.generar();
|
|
48
|
-
writeFileSync('F935.txt', resultado.contenido, 'utf-8');
|
|
49
|
-
console.log(resultado.resumen);
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## Tipos de registro
|
|
53
|
-
|
|
54
|
-
El archivo F935 comunica 5 tipos de registro:
|
|
55
|
-
|
|
56
|
-
### 1. Relaciones Laborales (Alta / Baja / Modificacion)
|
|
57
|
-
|
|
58
|
-
**Alta** - Registro de un nuevo empleado. Segun RG 5508/2024, requiere 7 campos obligatorios:
|
|
59
|
-
|
|
60
|
-
```ts
|
|
61
|
-
empleados.alta({
|
|
62
|
-
cuil: '20-12345678-6',
|
|
63
|
-
fechaInicio: new Date(2024, 2, 1),
|
|
64
|
-
modalidadContratacion: ModalidadContratacion.TIEMPO_COMPLETO_INDETERMINADO,
|
|
65
|
-
obraSocial: '100100',
|
|
66
|
-
actividadEconomica: '620100',
|
|
67
|
-
trabajadorAgropecuario: false, // default: false
|
|
68
|
-
domicilioExplotacion: { /* ... */ },
|
|
69
|
-
fechaFin: undefined, // solo para plazo fijo, eventual, aprendizaje, pasantia
|
|
70
|
-
});
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
**Baja** - Desvinculacion de un empleado (debe informarse dentro de 5 dias habiles):
|
|
74
|
-
|
|
75
|
-
```ts
|
|
76
|
-
empleados.baja({
|
|
77
|
-
cuil: '20-12345678-6',
|
|
78
|
-
fechaBaja: new Date(2024, 5, 15),
|
|
79
|
-
motivoBaja: MotivoBaja.RENUNCIA,
|
|
80
|
-
});
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
**Modificacion** - Cambios en una relacion laboral existente:
|
|
84
|
-
|
|
85
|
-
```ts
|
|
86
|
-
empleados.modificacion({
|
|
87
|
-
cuil: '20-12345678-6',
|
|
88
|
-
fechaInicio: new Date(2024, 2, 1),
|
|
89
|
-
obraSocial: '100200', // nuevo valor
|
|
90
|
-
});
|
|
19
|
+
npm install @ramiidv/arca-empleados
|
|
91
20
|
```
|
|
92
21
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
Datos adicionales que deben completarse antes de la primera liquidacion:
|
|
96
|
-
|
|
97
|
-
```ts
|
|
98
|
-
empleados.datosComplementarios({
|
|
99
|
-
cuil: '20-12345678-6',
|
|
100
|
-
fechaInicio: new Date(2024, 2, 1),
|
|
101
|
-
situacionRevista: SituacionRevista.ACTIVO,
|
|
102
|
-
nivelEducacion: NivelEducacion.UNIVERSITARIO_COMPLETO,
|
|
103
|
-
modalidadLiquidacion: ModalidadLiquidacion.MENSUAL,
|
|
104
|
-
remuneracion: 350000,
|
|
105
|
-
// ... mas campos opcionales
|
|
106
|
-
});
|
|
107
|
-
```
|
|
22
|
+
Requiere Node.js 18 o superior. ESM.
|
|
108
23
|
|
|
109
|
-
|
|
24
|
+
## Uso
|
|
110
25
|
|
|
111
26
|
```ts
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
fechaInicio: new Date(2024, 2, 1),
|
|
115
|
-
cbu: '0110599100000054489273',
|
|
116
|
-
tipoCuenta: TipoCuenta.CAJA_AHORRO,
|
|
117
|
-
});
|
|
118
|
-
```
|
|
27
|
+
import { writeFileSync } from 'node:fs';
|
|
28
|
+
import { ArcaEmpleados } from '@ramiidv/arca-empleados';
|
|
119
29
|
|
|
120
|
-
|
|
30
|
+
const sr = new ArcaEmpleados();
|
|
121
31
|
|
|
122
|
-
|
|
123
|
-
empleados.relacionFamiliar({
|
|
32
|
+
sr.alta({
|
|
124
33
|
cuil: '20-12345678-6',
|
|
125
|
-
fechaInicio:
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
34
|
+
fechaInicio: '2026-11-02',
|
|
35
|
+
modalidadContrato: 8,
|
|
36
|
+
obraSocial: '126205',
|
|
37
|
+
sucursal: 1,
|
|
38
|
+
retribucion: 850000.5,
|
|
39
|
+
cct: '9999/99',
|
|
40
|
+
})
|
|
41
|
+
.baja({ cuil: '27-11111111-7', fechaInicio: '2024-03-01', fechaFin: '2026-10-31' })
|
|
42
|
+
.modificacion({ cuil: '20-34567890-6', retribucion: 1200000 });
|
|
43
|
+
|
|
44
|
+
const { buffer, contenido, lineas, resumen } = sr.generar();
|
|
45
|
+
writeFileSync('relaciones-laborales.txt', buffer); // ISO-8859-1 + CRLF
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Los códigos (modalidad de contrato, obra social, situación de revista, sucursal, actividad, puesto,
|
|
49
|
+
convenio, categoría, tipo de servicio, modalidad de liquidación) se obtienen en el propio servicio con
|
|
50
|
+
**"Ver tablas informativas de códigos"**. ARCA no publica esas tablas en un documento público, así que el
|
|
51
|
+
SDK no las trae: valida solo que cada código sea numérico/alfanumérico y entre en su campo.
|
|
52
|
+
|
|
53
|
+
### API
|
|
54
|
+
|
|
55
|
+
| Método | Movimiento | Descripción |
|
|
56
|
+
| --- | --- | --- |
|
|
57
|
+
| `alta(datos)` | `AT` | Alta de relación laboral |
|
|
58
|
+
| `baja(datos)` | `BT` | Baja (la fecha de baja va en `fechaFin`) |
|
|
59
|
+
| `modificacion(datos)` | `MR` | Modificación |
|
|
60
|
+
| `novedad({ movimiento, ...datos })` | `AT`/`BT`/`MR`/`NA`/`NB` | Cualquier código; única vía para `NA` y `NB` |
|
|
61
|
+
| `altasMasivas([...])`, `bajasMasivas([...])`, `modificacionesMasivas([...])`, `novedadesMasivas([...])` | | **Atómicas**: validan todo y, si algo falla, no agregan nada |
|
|
62
|
+
| `generar()` | | `{ contenido, lineas, encoding, buffer, resumen }` |
|
|
63
|
+
| `registros` | | Copia de los registros agregados (modificarla no afecta al builder) |
|
|
64
|
+
| `cantidad`, `resumen()`, `limpiar()` | | |
|
|
65
|
+
|
|
66
|
+
Cada registro se valida y se serializa **al agregarlo**: si falla, se lanza el error y no se agrega.
|
|
67
|
+
|
|
68
|
+
Funciones sueltas (uso avanzado): `serializarRegistro`, `serializarArchivo`, `codificarArchivo`,
|
|
69
|
+
`formatFechaSR` (fecha → `AAAA/MM/DD`; distinto del `formatDate` de common, que da `AAAAMMDD`),
|
|
70
|
+
`validateRegistro`, `validateCuilTrabajador`, `DISENO_REGISTRO`, `CAMPOS_OBLIGATORIOS`.
|
|
71
|
+
|
|
72
|
+
### Configuración
|
|
134
73
|
|
|
135
74
|
```ts
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
75
|
+
new ArcaEmpleados({
|
|
76
|
+
strict: true, // default
|
|
77
|
+
serializacion: {
|
|
78
|
+
eol: '\r\n', // o '\n'
|
|
79
|
+
eolFinal: true, // fin de línea después del último registro
|
|
80
|
+
encoding: 'latin1', // o 'ascii'
|
|
81
|
+
noRepresentables: 'error', // o 'transliterar' (quita diacríticos: Ñ→N, Ú→U)
|
|
82
|
+
numericoVacio: 'ceros', // o 'espacios'
|
|
83
|
+
},
|
|
143
84
|
});
|
|
144
85
|
```
|
|
145
86
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
|
159
|
-
|
|
|
160
|
-
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
|
165
|
-
|
|
166
|
-
|
|
|
167
|
-
|
|
|
168
|
-
|
|
|
169
|
-
|
|
|
170
|
-
|
|
|
171
|
-
|
|
|
172
|
-
|
|
|
173
|
-
|
|
|
174
|
-
|
|
|
175
|
-
|
|
|
176
|
-
|
|
|
177
|
-
|
|
|
178
|
-
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
|
224
|
-
|
|
|
225
|
-
| `
|
|
226
|
-
| `
|
|
227
|
-
|
|
228
|
-
> Hay 35 codigos en total. Consultar el enum `ModalidadContratacion` para la lista completa.
|
|
229
|
-
|
|
230
|
-
### Motivo de Baja (`MotivoBaja`)
|
|
231
|
-
|
|
232
|
-
Codigos oficiales de Simplificacion Registral. Se muestran los mas utilizados:
|
|
233
|
-
|
|
234
|
-
| Codigo | Enum | Descripcion |
|
|
235
|
-
|--------|------|-------------|
|
|
236
|
-
| `0` | `FALLECIMIENTO` | Baja por fallecimiento |
|
|
237
|
-
| `7` | `DESPIDO` | Baja por despido |
|
|
238
|
-
| `21` | `RENUNCIA` | Renuncia del trabajador (Art.240 LCT) |
|
|
239
|
-
| `22` | `MUTUO_ACUERDO` | Voluntad concurrente de las partes (Art.241 LCT) |
|
|
240
|
-
| `26` | `DESPIDO_SIN_CAUSA` | Despido sin causa (Art.245 LCT) |
|
|
241
|
-
| `30` | `VENCIMIENTO_PLAZO` | Vencimiento de plazo (Art.250 LCT) |
|
|
242
|
-
| `33` | `JUBILACION` | Jubilacion (Art.252 LCT) |
|
|
243
|
-
| `34` | `INCAPACIDAD` | Incapacidad del trabajador (Art.254 LCT) |
|
|
244
|
-
| `38` | `FIN_APRENDIZAJE_PASANTIA` | Fin contrato de aprendizaje y pasantias |
|
|
245
|
-
| `99` | `VENCIMIENTO_PLAZO_FIJO` | Vencimiento contrato a plazo fijo o determinado |
|
|
246
|
-
|
|
247
|
-
> Hay 34 codigos en total. Consultar el enum `MotivoBaja` para la lista completa.
|
|
248
|
-
|
|
249
|
-
### Situacion de Revista (`SituacionRevista`)
|
|
250
|
-
|
|
251
|
-
Codigos oficiales de Simplificacion Registral. Se muestran los mas utilizados:
|
|
252
|
-
|
|
253
|
-
| Codigo | Enum | Descripcion |
|
|
254
|
-
|--------|------|-------------|
|
|
255
|
-
| `1` | `ACTIVO` | Activo |
|
|
256
|
-
| `5` | `LICENCIA_MATERNIDAD` | Licencia por maternidad |
|
|
257
|
-
| `6` | `SUSPENSION_OTRAS_CAUSALES` | Suspensiones otras causales |
|
|
258
|
-
| `9` | `SUSPENSION_223_BIS` | Suspendido Art. 223 Bis |
|
|
259
|
-
| `13` | `LICENCIA_SIN_GOCE` | Licencia sin goce de haberes |
|
|
260
|
-
| `14` | `RESERVA_PUESTO` | Reserva de puesto |
|
|
261
|
-
| `32` | `LICENCIA_PATERNIDAD` | Licencia por paternidad |
|
|
262
|
-
| `44` | `CONSERVACION_EMPLEO` | Conservacion del empleo |
|
|
263
|
-
|
|
264
|
-
> Hay 23 codigos en total. Consultar el enum `SituacionRevista` para la lista completa.
|
|
265
|
-
|
|
266
|
-
### Provincias (`Provincia`)
|
|
267
|
-
|
|
268
|
-
Codigos 0-23: CABA (0), Buenos Aires (1), Catamarca (2), Cordoba (3), Corrientes (4), Entre Rios (5), Jujuy (6), Mendoza (7), La Rioja (8), Salta (9), San Juan (10), San Luis (11), Santa Fe (12), Santiago del Estero (13), Tucuman (14), Chaco (15), Chubut (16), Formosa (17), Misiones (18), Neuquen (19), La Pampa (20), Rio Negro (21), Santa Cruz (22), Tierra del Fuego (23).
|
|
269
|
-
|
|
270
|
-
### Otros enums
|
|
271
|
-
|
|
272
|
-
- `NivelEducacion` (0-10): Sin instruccion hasta Posgrado completo
|
|
273
|
-
- `EstadoCivil` (1-6): Soltero, Casado, Divorciado, Viudo, Separado, Union convivencial
|
|
274
|
-
- `TipoRelacionFamiliar` (1-7): Conyuge, Hijo, Hijo discapacitado, Hijastro, Menor en guarda, Prenatal, Conviviente
|
|
275
|
-
- `TipoServicio` (1-2): Con/sin aporte PAMI
|
|
276
|
-
- `ModalidadLiquidacion` (1-8): Mensual, Quincenal, Semanal, Diaria, Por hora, Por pieza, A comision, Jornal
|
|
277
|
-
- `TipoCuenta` (1-2): Caja de ahorro, Cuenta corriente
|
|
278
|
-
- `Escolaridad` (0-5): No escolar hasta Universitaria
|
|
279
|
-
|
|
280
|
-
### Mapas de descripciones
|
|
281
|
-
|
|
282
|
-
Cada enum tiene un mapa de descripciones exportado:
|
|
283
|
-
|
|
284
|
-
```ts
|
|
285
|
-
import { MOTIVO_BAJA_DESCRIPCION, MotivoBaja } from '@ramiidv/arca-empleados-sdk';
|
|
286
|
-
|
|
287
|
-
console.log(MOTIVO_BAJA_DESCRIPCION[MotivoBaja.RENUNCIA]); // "Renuncia del trabajador (Art.240 LCT)"
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
Mapas disponibles: `MODALIDAD_CONTRATACION_DESCRIPCION`, `MOTIVO_BAJA_DESCRIPCION`, `SITUACION_REVISTA_DESCRIPCION`, `NIVEL_EDUCACION_DESCRIPCION`, `ESTADO_CIVIL_DESCRIPCION`, `TIPO_RELACION_FAMILIAR_DESCRIPCION`, `PROVINCIA_DESCRIPCION`, `MODALIDAD_LIQUIDACION_DESCRIPCION`, `TIPO_CUENTA_DESCRIPCION`, `ESCOLARIDAD_DESCRIPCION`, `TIPO_SERVICIO_DESCRIPCION`.
|
|
291
|
-
|
|
292
|
-
## Validacion
|
|
293
|
-
|
|
294
|
-
El SDK valida automaticamente los datos cuando `strict: true` (default):
|
|
295
|
-
|
|
296
|
-
### CUIL
|
|
297
|
-
|
|
298
|
-
- Formato: 11 digitos (acepta `XX-XXXXXXXX-X` o `XXXXXXXXXXX`)
|
|
299
|
-
- Prefijos validos: 20, 23, 24, 27, 30, 33, 34
|
|
300
|
-
- Digito verificador: algoritmo de modulo 11 con pesos [5,4,3,2,7,6,5,4,3,2]
|
|
301
|
-
|
|
302
|
-
### CBU
|
|
303
|
-
|
|
304
|
-
- Formato: 22 digitos
|
|
305
|
-
- Bloque 1 (8 digitos): banco + sucursal + digito verificador
|
|
306
|
-
- Bloque 2 (14 digitos): cuenta + digito verificador
|
|
307
|
-
- Ambos digitos verificadores se validan con algoritmo de pesos alternados
|
|
308
|
-
|
|
309
|
-
### Fechas
|
|
310
|
-
|
|
311
|
-
- Deben ser objetos `Date` validos
|
|
312
|
-
- `fechaFin` debe ser posterior a `fechaInicio`
|
|
313
|
-
- `fechaFin` es obligatoria para contratos a plazo fijo, eventuales, aprendizaje y pasantia
|
|
314
|
-
|
|
315
|
-
### Domicilios
|
|
316
|
-
|
|
317
|
-
- Calle, numero, localidad y codigo postal son requeridos
|
|
318
|
-
- Provincia debe ser un valor entre 0 y 23
|
|
319
|
-
|
|
320
|
-
## Manejo de errores
|
|
321
|
-
|
|
322
|
-
```ts
|
|
323
|
-
import {
|
|
324
|
-
ArcaEmpleadosError, // Base (catch-all)
|
|
325
|
-
ArcaValidationError, // Datos invalidos
|
|
326
|
-
ArcaSerializationError, // Fallo al serializar
|
|
327
|
-
} from '@ramiidv/arca-empleados-sdk';
|
|
328
|
-
|
|
329
|
-
try {
|
|
330
|
-
empleados.alta({ /* ... */ });
|
|
331
|
-
} catch (error) {
|
|
332
|
-
if (error instanceof ArcaValidationError) {
|
|
333
|
-
console.error('Campo:', error.field);
|
|
334
|
-
for (const detalle of error.errors) {
|
|
335
|
-
console.error(` ${detalle.field}: ${detalle.message}`);
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
## Utilidades de CUIL/CBU
|
|
342
|
-
|
|
343
|
-
```ts
|
|
344
|
-
import {
|
|
345
|
-
validateCuil, // Valida y retorna CUIL normalizado (11 digitos)
|
|
346
|
-
validateCBU, // Valida y retorna CBU (22 digitos)
|
|
347
|
-
normalizeCuil, // Quita guiones: "20-12345678-6" -> "20123456786"
|
|
348
|
-
formatCuil, // Agrega guiones: "20123456789" -> "20-12345678-6"
|
|
349
|
-
} from '@ramiidv/arca-empleados-sdk';
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
## Formato del archivo
|
|
353
|
-
|
|
354
|
-
El archivo generado usa formato delimitado por pipes (`|`). Cada linea representa un registro:
|
|
355
|
-
|
|
356
|
-
```text
|
|
357
|
-
00|CUIT_EMPLEADOR|RAZON_SOCIAL|FECHA_GENERACION|CANTIDAD_REGISTROS|
|
|
358
|
-
01|CUIT_EMPLEADOR|TIPO_OP|CUIL|...campos...|
|
|
359
|
-
02|CUIT_EMPLEADOR|CUIL|...campos...|
|
|
360
|
-
03|CUIT_EMPLEADOR|CUIL|...campos...|
|
|
361
|
-
04|CUIT_EMPLEADOR|CUIL|...campos...|
|
|
362
|
-
05|CUIT_EMPLEADOR|CUIL|...campos...|
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
- `00`: Header
|
|
366
|
-
- `01`: Relacion laboral (alta=0, baja=1, modificacion=2)
|
|
367
|
-
- `02`: Datos complementarios
|
|
368
|
-
- `03`: CBU
|
|
369
|
-
- `04`: Relacion familiar
|
|
370
|
-
- `05`: Domicilio de explotacion
|
|
371
|
-
|
|
372
|
-
Las fechas se formatean como DDMMYYYY. Los booleanos como 'S'/'N'.
|
|
373
|
-
|
|
374
|
-
## Nota sobre codigos SICOSS
|
|
375
|
-
|
|
376
|
-
Los codigos de modalidad de contratacion, situacion de revista, motivos de baja y otros estan basados en las tablas SICOSS oficiales. Es recomendable verificar los valores contra las tablas vigentes publicadas por ARCA, ya que pueden actualizarse periodicamente.
|
|
87
|
+
- `strict: true`: formato + reglas de negocio (CUIL con prefijo de persona física 20/23/24/27 y dígito
|
|
88
|
+
verificador, campos obligatorios por movimiento, rectificación `00`–`05`, marca `0`–`9`,
|
|
89
|
+
`fechaFin ≥ fechaInicio`). Todos los errores se informan juntos en `ArcaValidationError.details`.
|
|
90
|
+
- `strict: false`: solo formato (que el registro entre en las 130 posiciones). Datos que no son un
|
|
91
|
+
objeto o un movimiento inválido dan `ArcaValidationError`; un valor que no entra en su campo da
|
|
92
|
+
`ArcaSerializationError` con `field`, `desde`, `hasta` y `value`.
|
|
93
|
+
|
|
94
|
+
## Diseño de registro (oficial)
|
|
95
|
+
|
|
96
|
+
Un único tipo de registro, `01`, de 130 posiciones. Tabla transcripta del manual (pág. 24):
|
|
97
|
+
|
|
98
|
+
| Pos. | Campo (propiedad) | Tipo | Long. | Formato |
|
|
99
|
+
| --- | --- | --- | --- | --- |
|
|
100
|
+
| 1-2 | Tipo de registro | N | 2 | `01` |
|
|
101
|
+
| 3-4 | Código de movimiento (`movimiento`) | A | 2 | `AT`, `BT`, `MR`, `NA`, `NB` |
|
|
102
|
+
| 5-15 | CUIL del empleado (`cuil`) | N | 11 | |
|
|
103
|
+
| 16 | Marca de trabajador agropecuario (`trabajadorAgropecuario`) | A | 1 | |
|
|
104
|
+
| 17-19 | Modalidad de contrato (`modalidadContrato`) | N | 3 | |
|
|
105
|
+
| 20-29 | Fecha de inicio de rel. laboral (`fechaInicio`) | A | 10 | `AAAA/MM/DD` |
|
|
106
|
+
| 30-39 | Fecha de fin de rel. laboral (`fechaFin`) | A | 10 | `AAAA/MM/DD` |
|
|
107
|
+
| 40-45 | Código obra social (`obraSocial`) | N | 6 | |
|
|
108
|
+
| 46-47 | Situación de revista (`situacionRevista`) | N | 2 | |
|
|
109
|
+
| 48-57 | Fecha recepción telegrama de renuncia (`fechaTelegramaRenuncia`) | A | 10 | `AAAA/MM/DD` |
|
|
110
|
+
| 58-72 | Retribución pactada (`retribucion`) | N | 15 | |
|
|
111
|
+
| 73 | Modalidad de liquidación (`modalidadLiquidacion`) | N | 1 | |
|
|
112
|
+
| 74-78 | Sucursal – domicilio de desempeño (`sucursal`) | N | 5 | |
|
|
113
|
+
| 79-84 | Actividad en el domicilio de desempeño (`actividad`) | N | 6 | |
|
|
114
|
+
| 85-88 | Puesto desempeñado (`puesto`) | A | 4 | |
|
|
115
|
+
| 89-90 | Rectificación (`rectificacion`) | N | 2 | `00`–`05` |
|
|
116
|
+
| 91-100 | Convenio colectivo de trabajo (`cct`) | A | 10 | |
|
|
117
|
+
| 101-106 | Categoría profesional (`categoriaProfesional`) | N | 6 | |
|
|
118
|
+
| 107-109 | Tipo de servicio (`tipoServicio`) | N | 3 | |
|
|
119
|
+
| 110-119 | Fecha de suspensión servicios temporarios (`fechaSuspensionServiciosTemporarios`) | A | 10 | `AAAA/MM/DD` |
|
|
120
|
+
| 120-129 | Número formulario agropecuario (`numeroFormularioAgropecuario`) | N | 10 | |
|
|
121
|
+
| 130 | Marca licencia COVID / tipo de contrato CCG (`marcaCovidTipoContratoCCG`) | N | 1 | `0`–`9` |
|
|
122
|
+
|
|
123
|
+
### Qué es oficial y qué es convención
|
|
124
|
+
|
|
125
|
+
**Oficial (manual):** las posiciones, largos y tipos de la tabla; el formato `AAAA/MM/DD` de las fechas;
|
|
126
|
+
los códigos `AT,BT,MR,NA,NB`; rectificación `00`–`05`; la marca de la posición 130 (`0`–`9`, default
|
|
127
|
+
`0`); que la retribución se informa "con indicación de centavos"; que el CCT `9999/99` es "excluido de
|
|
128
|
+
convenio"; los datos mínimos del alta (RG 5508/2024): CUIL, domicilio de desempeño, fecha de inicio,
|
|
129
|
+
modalidad de contratación, obra social y fecha de fin si el contrato es a plazo fijo.
|
|
130
|
+
|
|
131
|
+
**Convención no documentada por ARCA** (la habitual en los diseños de registro de ARCA; configurable
|
|
132
|
+
donde se indica):
|
|
133
|
+
|
|
134
|
+
| Tema | Lo que hace el SDK | Configurable |
|
|
135
|
+
| --- | --- | --- |
|
|
136
|
+
| Numéricos | Ceros a la izquierda | — |
|
|
137
|
+
| Numérico no informado | Ceros (salvo rectificación y marca 130, siempre `0`) | `numericoVacio: 'espacios'` |
|
|
138
|
+
| Alfanuméricos | Espacios a la derecha; sin cambiar mayúsculas | — |
|
|
139
|
+
| Fecha no informada | 10 espacios | — |
|
|
140
|
+
| Retribución | 2 decimales implícitos, sin separador: `1500.5` → `000000000150050`. Más de 2 decimales es error (no se redondea) | — |
|
|
141
|
+
| Codificación | ISO-8859-1 (`Buffer` en latin1, 1 byte por caracter) | `encoding: 'ascii'` |
|
|
142
|
+
| Caracteres no representables | Error | `noRepresentables: 'transliterar'` |
|
|
143
|
+
| Fin de línea | CRLF, también después del último registro | `eol`, `eolFinal` |
|
|
144
|
+
| Fechas `Date` | Se toma la fecha calendario de Argentina (`America/Argentina/Buenos_Aires`) | Pasá un string `AAAA-MM-DD` para fijarla literal |
|
|
145
|
+
| Marca de trabajador agropecuario | Se escribe el caracter que pases (el manual no dice cuál) | — |
|
|
146
|
+
|
|
147
|
+
**No verificado / no documentado:**
|
|
148
|
+
|
|
149
|
+
- El significado de `NA` y `NB`. El manual los lista sin describirlos (`AT`, `BT` y `MR` = alta, baja y
|
|
150
|
+
modificación coinciden con la RG 3399/2012). Se pueden usar con `novedad()`; el SDK solo exige el CUIL.
|
|
151
|
+
- El significado de cada valor de "Rectificación" y de la marca de la posición 130.
|
|
152
|
+
- Qué campos exige ARCA para `BT`, `MR`, `NA` y `NB`. El SDK exige: `AT` → `cuil`, `fechaInicio`,
|
|
153
|
+
`modalidadContrato`, `obraSocial`, `sucursal`; `BT` → `cuil`, `fechaFin`; el resto → `cuil`
|
|
154
|
+
(`CAMPOS_OBLIGATORIOS`). La fecha de fin obligatoria para contratos a plazo fijo no se puede chequear
|
|
155
|
+
sin la tabla de modalidades. El servicio de ARCA hace su propia validación al importar el archivo y
|
|
156
|
+
muestra los rechazos en el listado de novedades.
|
|
157
|
+
|
|
158
|
+
Nada se trunca en silencio: un valor que no entra en su campo, `NaN`, un número negativo o con decimales
|
|
159
|
+
en un campo de código, un tipo incorrecto, una fecha inexistente, un salto de línea o un caracter no
|
|
160
|
+
representable lanzan `ArcaSerializationError`.
|
|
161
|
+
|
|
162
|
+
## Errores
|
|
163
|
+
|
|
164
|
+
| Clase | Cuándo |
|
|
165
|
+
| --- | --- |
|
|
166
|
+
| `ArcaValidationError` (de common) | Reglas de negocio, datos que no son un objeto, movimiento inválido, `generar()` sin registros. `details[]` por campo; en las operaciones masivas el campo es `"[i].campo"` y `cause` es el error original (o un `AggregateError` con uno por registro). |
|
|
167
|
+
| `ArcaSerializationError` | Un valor no se puede escribir en el formato. `field`, `desde`, `hasta`, `value`, `indice` (en `serializarArchivo`), `cause`. |
|
|
168
|
+
| `ArcaEmpleadosError` | Base de los errores propios (acepta `{ cause }`). |
|
|
377
169
|
|
|
378
170
|
## Licencia
|
|
379
171
|
|