@ramiidv/arca-empleados 0.2.0 → 0.4.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/CHANGELOG.md +109 -0
- 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 +234 -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 +301 -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 +85 -229
- package/dist/validators.js.map +1 -1
- package/llms.txt +49 -249
- package/package.json +24 -23
- 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/CHANGELOG.md
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- bed68e8: Paquetes solo ESM y Node >= 20.19. `arca-common`, `arca-facturacion` y
|
|
8
|
+
`arca-padron` dejan de publicar un build CommonJS: desde CommonJS se cargan con
|
|
9
|
+
`require()` (require(esm), Node >= 20.19 / 22.12). Todos los paquetes pasan a
|
|
10
|
+
requerir Node >= 20.19.0 (Node 18 y 20 sin soporte). El código vive ahora en el
|
|
11
|
+
monorepo `arca-sdks`.
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [8c02c30]
|
|
16
|
+
- Updated dependencies [f8bd053]
|
|
17
|
+
- Updated dependencies [242fb5f]
|
|
18
|
+
- Updated dependencies [fd438bc]
|
|
19
|
+
- Updated dependencies [bed68e8]
|
|
20
|
+
- Updated dependencies [20ecf7d]
|
|
21
|
+
- Updated dependencies [b86db00]
|
|
22
|
+
- @ramiidv/arca-common@0.5.0
|
|
23
|
+
|
|
24
|
+
## 0.3.0 (2026-11-01)
|
|
25
|
+
|
|
26
|
+
Reescritura del serializador según el diseño de registro oficial del
|
|
27
|
+
[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).
|
|
28
|
+
Las versiones anteriores generaban un formato inventado que ARCA no acepta.
|
|
29
|
+
|
|
30
|
+
### Breaking
|
|
31
|
+
- El archivo pasa a ser TXT de **ancho fijo de 130 posiciones** con un único tipo de registro `01` y
|
|
32
|
+
código de movimiento `AT`/`BT`/`MR`/`NA`/`NB`. Se eliminaron el header `00`, los registros `01`–`05`
|
|
33
|
+
delimitados por `|` y todo lo asociado: datos complementarios, CBU, relaciones familiares y domicilio
|
|
34
|
+
de explotación (`datosComplementarios()`, `cbu()`, `relacionFamiliar()`, `domicilioExplotacion()`),
|
|
35
|
+
que no forman parte del formato oficial.
|
|
36
|
+
- Se abandona el nombre "F935" (era el archivo encriptado del viejo aplicativo "Mi Simplificación –
|
|
37
|
+
Ingreso Masivo de Datos v2.0", ya discontinuado). Tipos nuevos: `DatosRelacionLaboral`,
|
|
38
|
+
`RegistroRelacionLaboral`, `ArchivoIngresoMasivo`, `ResumenIngresoMasivo`, `OpcionesSerializacion`.
|
|
39
|
+
Se eliminaron `F935Registro*`, `F935Archivo`, `F935Output`, `F935Resumen`, `AltaEmpleado`,
|
|
40
|
+
`BajaEmpleado`, `ModificacionEmpleado`, `DatosComplementarios`, `DatosCBU`, `RelacionFamiliar`,
|
|
41
|
+
`DomicilioExplotacion` (sin alias: la forma de los datos cambió por completo).
|
|
42
|
+
- `ArcaEmpleadosConfig`: se quitan `cuitEmpleador` y `razonSocial` (el archivo no los lleva); se agregan
|
|
43
|
+
`serializacion` y se mantiene `strict`. El constructor no requiere argumentos.
|
|
44
|
+
- Campos renombrados según el manual: `modalidadContratacion` → `modalidadContrato`,
|
|
45
|
+
`actividadEconomica` → `actividad`, `fechaBaja` → `fechaFin` (en `BT`), `remuneracion` → `retribucion`,
|
|
46
|
+
`puestoDesempenado` → `puesto`, `convenioColectivo` → `cct`; `motivoBaja` y `domicilioExplotacion` no
|
|
47
|
+
existen en el formato (el domicilio se informa con el código de `sucursal`).
|
|
48
|
+
- `generar()` devuelve `{ contenido, lineas, encoding, buffer, resumen }`.
|
|
49
|
+
- Constantes: se eliminaron todas las tablas sin fuente verificable (`ModalidadContratacion`,
|
|
50
|
+
`SituacionRevista`, `MotivoBaja`, `NivelEducacion`, `EstadoCivil`, `TipoRelacionFamiliar`, `Provincia`
|
|
51
|
+
local, `TipoServicio`, `ModalidadLiquidacion`, `TipoOperacion`, `TipoCuenta`, `Escolaridad`, sus
|
|
52
|
+
`*_DESCRIPCION` y `MODALIDADES_CON_FECHA_FIN`). Quedan solo los valores del manual: `CodigoMovimiento`,
|
|
53
|
+
`VALORES_RECTIFICACION`, `VALORES_MARCA_COVID_CCG`, `LONGITUD_REGISTRO`, `TIPO_REGISTRO`.
|
|
54
|
+
- Ya no se re-exportan los validadores de common (`validateCuil`, `normalizeCuil`, `formatCuil`,
|
|
55
|
+
`validateCBU`, `validateFecha`, `validateFechaRango`); usá `@ramiidv/arca-common` directamente.
|
|
56
|
+
`formatDate` (que daba `DDMMAAAA`) se reemplaza por `formatFechaSR` (`AAAA/MM/DD`), para no chocar
|
|
57
|
+
con el `formatDate` de common.
|
|
58
|
+
- Serializadores reemplazados por `serializarRegistro`, `serializarArchivo` y `codificarArchivo`.
|
|
59
|
+
- Dependencia `@ramiidv/arca-common` `^0.4.0`.
|
|
60
|
+
|
|
61
|
+
### Features
|
|
62
|
+
- API por movimiento: `alta` (AT), `baja` (BT), `modificacion` (MR) y `novedad` (cualquier código,
|
|
63
|
+
incluidos `NA`/`NB`), más `altasMasivas`, `bajasMasivas`, `modificacionesMasivas` y
|
|
64
|
+
`novedadesMasivas`, **atómicas** (si un registro falla no se agrega ninguno; los errores llevan
|
|
65
|
+
el índice: `"[i].campo"`).
|
|
66
|
+
- Opciones de serialización configurables: fin de línea (CRLF por defecto), fin de línea final,
|
|
67
|
+
codificación (`latin1` por defecto, o `ascii`), transliteración de caracteres no representables y
|
|
68
|
+
relleno de numéricos vacíos.
|
|
69
|
+
- `generar().buffer` (ISO-8859-1) listo para escribir a disco; `codificarArchivo()`.
|
|
70
|
+
- `DISENO_REGISTRO` (tabla del manual), `CAMPOS_OBLIGATORIOS`, `validateRegistro`,
|
|
71
|
+
`validateCuilTrabajador` (prefijos 20/23/24/27 + dígito verificador).
|
|
72
|
+
- `ArcaSerializationError` con `field`, `desde`, `hasta`, `value`, `indice` y `cause`;
|
|
73
|
+
`ArcaEmpleadosError` acepta `{ cause }`.
|
|
74
|
+
- `package.json`: `sideEffects: false`, `exports.import`, `prepublishOnly` con clean + build + test.
|
|
75
|
+
|
|
76
|
+
### Fixes
|
|
77
|
+
- Ningún valor se trunca en silencio: exceso de largo, `NaN`, `Infinity`, negativos, decimales en
|
|
78
|
+
códigos, más de 2 decimales en la retribución, tipos incorrectos, fechas inexistentes, caracteres de
|
|
79
|
+
control y caracteres no representables lanzan `ArcaSerializationError`.
|
|
80
|
+
- Fechas en formato `AAAA/MM/DD` (antes `DDMMAAAA`) y sin corrimientos por zona horaria: los `Date` se
|
|
81
|
+
toman en hora de Argentina y los strings `AAAA-MM-DD` se respetan literalmente.
|
|
82
|
+
- `strict: false` con datos inválidos daba `TypeError: Cannot read properties of undefined`; ahora da
|
|
83
|
+
`ArcaValidationError` / `ArcaSerializationError` explícitos.
|
|
84
|
+
- `registros` devolvía los objetos internos (mutables); ahora devuelve copias, y los datos se copian
|
|
85
|
+
al agregarlos.
|
|
86
|
+
- README y `llms.txt` decían `@ramiidv/arca-empleados-sdk`; el paquete es `@ramiidv/arca-empleados`.
|
|
87
|
+
`repository`/`bugs` apuntan a `github.com/ramiidv/arca-empleados`.
|
|
88
|
+
|
|
89
|
+
## 0.2.0 (2026-06-03)
|
|
90
|
+
|
|
91
|
+
### Fixes
|
|
92
|
+
- Dependencia `@ramiidv/arca-common` `^0.2.0` (corrige el dígito verificador de CBU); tests de CBU y
|
|
93
|
+
ejemplos con CBUs válidos.
|
|
94
|
+
- `publishConfig.access: public`; `homepage` a arca-sdk.dev.
|
|
95
|
+
|
|
96
|
+
### Chore
|
|
97
|
+
- Workflows de CI (Node 18/20/22) y de release.
|
|
98
|
+
|
|
99
|
+
## 0.1.0 (2026-03-31)
|
|
100
|
+
|
|
101
|
+
### Features
|
|
102
|
+
- Initial release
|
|
103
|
+
- F935 file generation for employee management (Mi Simplificación)
|
|
104
|
+
- Alta (hiring), Baja (termination), Modificación (changes)
|
|
105
|
+
- Datos complementarios, CBU registration, relaciones familiares, domicilio de explotación
|
|
106
|
+
- Bulk operations (altasMasivas, bajasMasivas)
|
|
107
|
+
- Full CUIL/CBU/date validation (from @ramiidv/arca-common)
|
|
108
|
+
- Record-level validation for all operation types
|
|
109
|
+
- Complete F935 serialization with pipe-delimited format
|
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
|
|