@ramiidv/arca-empleados 0.1.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/LICENSE +21 -0
- package/README.md +380 -0
- package/dist/constants.d.ts +314 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +511 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +22 -0
- package/dist/errors.js.map +1 -0
- package/dist/f935-builder.d.ts +91 -0
- package/dist/f935-builder.d.ts.map +1 -0
- package/dist/f935-builder.js +246 -0
- package/dist/f935-builder.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/serializer.d.ts +58 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/serializer.js +304 -0
- package/dist/serializer.js.map +1 -0
- package/dist/types.d.ts +204 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/validators.d.ts +38 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +255 -0
- package/dist/validators.js.map +1 -0
- package/llms.txt +269 -0
- package/package.json +64 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
// Shared validators from common
|
|
2
|
+
export { validateCuil, validateCBU, normalizeCuil, formatCuil, validateFecha, validateFechaRango, collectErrors, collectErrorsWithPrefix, } from '@ramiidv/arca-common';
|
|
3
|
+
import { ArcaValidationError, collectErrors, collectErrorsWithPrefix, validateCuil, validateFecha, validateFechaRango, validateCBU, } from '@ramiidv/arca-common';
|
|
4
|
+
import { MODALIDADES_CON_FECHA_FIN } from './constants.js';
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// Error collection helpers (local)
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
/**
|
|
9
|
+
* Same as collectErrors but replaces the field name entirely on collected errors.
|
|
10
|
+
*/
|
|
11
|
+
function collectErrorsAs(fn, errors, fieldName) {
|
|
12
|
+
try {
|
|
13
|
+
fn();
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
if (e instanceof ArcaValidationError) {
|
|
17
|
+
errors.push(...e.details.map(err => ({
|
|
18
|
+
...err,
|
|
19
|
+
field: fieldName,
|
|
20
|
+
})));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Record-level validators
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/**
|
|
28
|
+
* Validates all fields of an AltaEmpleado record.
|
|
29
|
+
* @throws ArcaValidationError if any field is invalid.
|
|
30
|
+
*/
|
|
31
|
+
export function validateAlta(alta) {
|
|
32
|
+
const errors = [];
|
|
33
|
+
// CUIL
|
|
34
|
+
collectErrors(() => validateCuil(alta.cuil), errors);
|
|
35
|
+
// Fecha de inicio
|
|
36
|
+
collectErrors(() => validateFecha(alta.fechaInicio, 'fechaInicio'), errors);
|
|
37
|
+
// Modalidad de contratacion
|
|
38
|
+
if (alta.modalidadContratacion == null || typeof alta.modalidadContratacion !== 'number') {
|
|
39
|
+
errors.push({
|
|
40
|
+
field: 'modalidadContratacion',
|
|
41
|
+
message: 'La modalidad de contratacion es requerida',
|
|
42
|
+
value: alta.modalidadContratacion,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
// Obra social
|
|
46
|
+
if (!alta.obraSocial || typeof alta.obraSocial !== 'string' || alta.obraSocial.trim() === '') {
|
|
47
|
+
errors.push({
|
|
48
|
+
field: 'obraSocial',
|
|
49
|
+
message: 'La obra social es requerida',
|
|
50
|
+
value: alta.obraSocial,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
// Actividad economica
|
|
54
|
+
if (!alta.actividadEconomica || typeof alta.actividadEconomica !== 'string' || alta.actividadEconomica.trim() === '') {
|
|
55
|
+
errors.push({
|
|
56
|
+
field: 'actividadEconomica',
|
|
57
|
+
message: 'La actividad economica es requerida',
|
|
58
|
+
value: alta.actividadEconomica,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
// Domicilio de explotacion
|
|
62
|
+
collectErrorsWithPrefix(() => validateDomicilio(alta.domicilioExplotacion), errors, 'domicilioExplotacion');
|
|
63
|
+
// Fecha de fin requerida para ciertas modalidades
|
|
64
|
+
if (MODALIDADES_CON_FECHA_FIN.has(alta.modalidadContratacion) && !alta.fechaFin) {
|
|
65
|
+
errors.push({
|
|
66
|
+
field: 'fechaFin',
|
|
67
|
+
message: `La fecha de fin es requerida para la modalidad de contratacion ${alta.modalidadContratacion}`,
|
|
68
|
+
value: alta.fechaFin,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
// Validate fecha range if both dates exist
|
|
72
|
+
if (alta.fechaFin) {
|
|
73
|
+
collectErrors(() => validateFechaRango(alta.fechaInicio, alta.fechaFin), errors);
|
|
74
|
+
}
|
|
75
|
+
if (errors.length > 0) {
|
|
76
|
+
throw new ArcaValidationError(`Datos de alta invalidos: ${errors.map(e => e.message).join('; ')}`, errors);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Validates all fields of a BajaEmpleado record.
|
|
81
|
+
* @throws ArcaValidationError if any field is invalid.
|
|
82
|
+
*/
|
|
83
|
+
export function validateBaja(baja) {
|
|
84
|
+
const errors = [];
|
|
85
|
+
collectErrors(() => validateCuil(baja.cuil), errors);
|
|
86
|
+
collectErrors(() => validateFecha(baja.fechaBaja, 'fechaBaja'), errors);
|
|
87
|
+
if (baja.motivoBaja == null || typeof baja.motivoBaja !== 'number') {
|
|
88
|
+
errors.push({
|
|
89
|
+
field: 'motivoBaja',
|
|
90
|
+
message: 'El motivo de baja es requerido',
|
|
91
|
+
value: baja.motivoBaja,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
if (errors.length > 0) {
|
|
95
|
+
throw new ArcaValidationError(`Datos de baja invalidos: ${errors.map(e => e.message).join('; ')}`, errors);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Validates all fields of a ModificacionEmpleado record.
|
|
100
|
+
* @throws ArcaValidationError if any field is invalid.
|
|
101
|
+
*/
|
|
102
|
+
export function validateModificacion(mod) {
|
|
103
|
+
const errors = [];
|
|
104
|
+
collectErrors(() => validateCuil(mod.cuil), errors);
|
|
105
|
+
collectErrors(() => validateFecha(mod.fechaInicio, 'fechaInicio'), errors);
|
|
106
|
+
if (mod.domicilioExplotacion) {
|
|
107
|
+
collectErrorsWithPrefix(() => validateDomicilio(mod.domicilioExplotacion), errors, 'domicilioExplotacion');
|
|
108
|
+
}
|
|
109
|
+
if (mod.fechaFin) {
|
|
110
|
+
collectErrors(() => validateFechaRango(mod.fechaInicio, mod.fechaFin), errors);
|
|
111
|
+
}
|
|
112
|
+
if (errors.length > 0) {
|
|
113
|
+
throw new ArcaValidationError(`Datos de modificacion invalidos: ${errors.map(e => e.message).join('; ')}`, errors);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Validates all fields of a DatosComplementarios record.
|
|
118
|
+
* @throws ArcaValidationError if any field is invalid.
|
|
119
|
+
*/
|
|
120
|
+
export function validateDatosComplementarios(datos) {
|
|
121
|
+
const errors = [];
|
|
122
|
+
collectErrors(() => validateCuil(datos.cuil), errors);
|
|
123
|
+
collectErrors(() => validateFecha(datos.fechaInicio, 'fechaInicio'), errors);
|
|
124
|
+
if (datos.situacionRevista == null || typeof datos.situacionRevista !== 'number') {
|
|
125
|
+
errors.push({
|
|
126
|
+
field: 'situacionRevista',
|
|
127
|
+
message: 'La situacion de revista es requerida',
|
|
128
|
+
value: datos.situacionRevista,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
if (datos.remuneracion !== undefined && datos.remuneracion < 0) {
|
|
132
|
+
errors.push({
|
|
133
|
+
field: 'remuneracion',
|
|
134
|
+
message: 'La remuneracion no puede ser negativa',
|
|
135
|
+
value: datos.remuneracion,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
if (datos.cantidadHorasTrabajadas !== undefined && datos.cantidadHorasTrabajadas < 0) {
|
|
139
|
+
errors.push({
|
|
140
|
+
field: 'cantidadHorasTrabajadas',
|
|
141
|
+
message: 'La cantidad de horas trabajadas no puede ser negativa',
|
|
142
|
+
value: datos.cantidadHorasTrabajadas,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
if (datos.fechaPreaviso) {
|
|
146
|
+
collectErrors(() => validateFecha(datos.fechaPreaviso, 'fechaPreaviso'), errors);
|
|
147
|
+
}
|
|
148
|
+
if (errors.length > 0) {
|
|
149
|
+
throw new ArcaValidationError(`Datos complementarios invalidos: ${errors.map(e => e.message).join('; ')}`, errors);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Validates all fields of a DatosCBU record.
|
|
154
|
+
* @throws ArcaValidationError if any field is invalid.
|
|
155
|
+
*/
|
|
156
|
+
export function validateCBUData(cbuData) {
|
|
157
|
+
const errors = [];
|
|
158
|
+
collectErrors(() => validateCuil(cbuData.cuil), errors);
|
|
159
|
+
collectErrors(() => validateFecha(cbuData.fechaInicio, 'fechaInicio'), errors);
|
|
160
|
+
collectErrors(() => validateCBU(cbuData.cbu), errors);
|
|
161
|
+
if (errors.length > 0) {
|
|
162
|
+
throw new ArcaValidationError(`Datos de CBU invalidos: ${errors.map(e => e.message).join('; ')}`, errors);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Validates all fields of a RelacionFamiliar record.
|
|
167
|
+
* @throws ArcaValidationError if any field is invalid.
|
|
168
|
+
*/
|
|
169
|
+
export function validateRelacionFamiliar(rel) {
|
|
170
|
+
const errors = [];
|
|
171
|
+
collectErrors(() => validateCuil(rel.cuil), errors);
|
|
172
|
+
collectErrors(() => validateFecha(rel.fechaInicio, 'fechaInicio'), errors);
|
|
173
|
+
if (rel.tipoRelacion == null || typeof rel.tipoRelacion !== 'number') {
|
|
174
|
+
errors.push({
|
|
175
|
+
field: 'tipoRelacion',
|
|
176
|
+
message: 'El tipo de relacion familiar es requerido',
|
|
177
|
+
value: rel.tipoRelacion,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
if (!rel.nombreFamiliar || rel.nombreFamiliar.trim() === '') {
|
|
181
|
+
errors.push({
|
|
182
|
+
field: 'nombreFamiliar',
|
|
183
|
+
message: 'El nombre del familiar es requerido',
|
|
184
|
+
value: rel.nombreFamiliar,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
if (!rel.apellidoFamiliar || rel.apellidoFamiliar.trim() === '') {
|
|
188
|
+
errors.push({
|
|
189
|
+
field: 'apellidoFamiliar',
|
|
190
|
+
message: 'El apellido del familiar es requerido',
|
|
191
|
+
value: rel.apellidoFamiliar,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
collectErrors(() => validateFecha(rel.fechaNacimiento, 'fechaNacimiento'), errors);
|
|
195
|
+
// CUIL familiar validation (if provided)
|
|
196
|
+
if (rel.cuilFamiliar) {
|
|
197
|
+
collectErrorsAs(() => validateCuil(rel.cuilFamiliar), errors, 'cuilFamiliar');
|
|
198
|
+
}
|
|
199
|
+
// CUIL titular obra social validation (if provided)
|
|
200
|
+
if (rel.cuilTitularObraSocial) {
|
|
201
|
+
collectErrorsAs(() => validateCuil(rel.cuilTitularObraSocial), errors, 'cuilTitularObraSocial');
|
|
202
|
+
}
|
|
203
|
+
if (errors.length > 0) {
|
|
204
|
+
throw new ArcaValidationError(`Datos de relacion familiar invalidos: ${errors.map(e => e.message).join('; ')}`, errors);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Validates all fields of a DomicilioExplotacion record.
|
|
209
|
+
* @throws ArcaValidationError if any field is invalid.
|
|
210
|
+
*/
|
|
211
|
+
export function validateDomicilio(dom) {
|
|
212
|
+
const errors = [];
|
|
213
|
+
if (!dom) {
|
|
214
|
+
throw new ArcaValidationError('El domicilio de explotacion es requerido.', [{ field: 'domicilioExplotacion', message: 'El domicilio de explotacion es requerido' }], 'domicilioExplotacion');
|
|
215
|
+
}
|
|
216
|
+
if (!dom.calle || dom.calle.trim() === '') {
|
|
217
|
+
errors.push({
|
|
218
|
+
field: 'calle',
|
|
219
|
+
message: 'La calle es requerida',
|
|
220
|
+
value: dom.calle,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
if (!dom.numero || dom.numero.trim() === '') {
|
|
224
|
+
errors.push({
|
|
225
|
+
field: 'numero',
|
|
226
|
+
message: 'El numero es requerido',
|
|
227
|
+
value: dom.numero,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
if (!dom.localidad || dom.localidad.trim() === '') {
|
|
231
|
+
errors.push({
|
|
232
|
+
field: 'localidad',
|
|
233
|
+
message: 'La localidad es requerida',
|
|
234
|
+
value: dom.localidad,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
if (!dom.codigoPostal || dom.codigoPostal.trim() === '') {
|
|
238
|
+
errors.push({
|
|
239
|
+
field: 'codigoPostal',
|
|
240
|
+
message: 'El codigo postal es requerido',
|
|
241
|
+
value: dom.codigoPostal,
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
if (dom.provincia == null || typeof dom.provincia !== 'number' || dom.provincia < 0 || dom.provincia > 23) {
|
|
245
|
+
errors.push({
|
|
246
|
+
field: 'provincia',
|
|
247
|
+
message: 'La provincia debe ser un valor entre 0 y 23',
|
|
248
|
+
value: dom.provincia,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
if (errors.length > 0) {
|
|
252
|
+
throw new ArcaValidationError(`Domicilio de explotacion invalido: ${errors.map(e => e.message).join('; ')}`, errors);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
|
package/llms.txt
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# @ramiidv/arca-empleados-sdk
|
|
2
|
+
|
|
3
|
+
TypeScript SDK for generating ARCA (ex AFIP) F935 bulk employee management files.
|
|
4
|
+
This SDK generates structured data files for "Mi Simplificacion - Ingreso Masivo de Datos".
|
|
5
|
+
It does NOT make API/SOAP calls - it is a pure file generator with strong typing and validation.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
npm install @ramiidv/arca-empleados-sdk
|
|
10
|
+
|
|
11
|
+
## Main Class: ArcaEmpleados
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { ArcaEmpleados } from '@ramiidv/arca-empleados-sdk';
|
|
15
|
+
|
|
16
|
+
const empleados = new ArcaEmpleados({
|
|
17
|
+
cuitEmpleador: '30-71234567-1', // required, CUIT of employer
|
|
18
|
+
razonSocial: 'Mi Empresa S.A.', // optional
|
|
19
|
+
strict: true, // optional, default true - validate on add
|
|
20
|
+
});
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Methods (all return `this` for chaining, except `generar`/`resumen`):
|
|
24
|
+
|
|
25
|
+
- `alta(data: AltaEmpleado): this` - Add employee registration
|
|
26
|
+
- `baja(data: BajaEmpleado): this` - Add employee termination
|
|
27
|
+
- `modificacion(data: ModificacionEmpleado): this` - Add employee modification
|
|
28
|
+
- `datosComplementarios(data: DatosComplementarios): this` - Add supplementary data
|
|
29
|
+
- `cbu(data: DatosCBU): this` - Add banking data
|
|
30
|
+
- `relacionFamiliar(data: RelacionFamiliar): this` - Add family relationship
|
|
31
|
+
- `domicilioExplotacion(data: DomicilioExplotacion & { cuil: string }): this` - Add work address
|
|
32
|
+
- `altasMasivas(data: AltaEmpleado[]): this` - Bulk registrations
|
|
33
|
+
- `bajasMasivas(data: BajaEmpleado[]): this` - Bulk terminations
|
|
34
|
+
- `generar(): F935Output` - Generate file content + metadata
|
|
35
|
+
- `resumen(): F935Resumen` - Get record summary
|
|
36
|
+
- `limpiar(): this` - Clear all records
|
|
37
|
+
- `registros: F935Registro[]` - Read-only stored records
|
|
38
|
+
|
|
39
|
+
## Key Types
|
|
40
|
+
|
|
41
|
+
### AltaEmpleado (7 mandatory fields per RG 5508/2024)
|
|
42
|
+
```ts
|
|
43
|
+
{
|
|
44
|
+
cuil: string, // Worker CUIL
|
|
45
|
+
fechaInicio: Date, // Start date
|
|
46
|
+
modalidadContratacion: number, // Contract type (ModalidadContratacion enum)
|
|
47
|
+
obraSocial: string, // Health insurance code
|
|
48
|
+
actividadEconomica: string, // Economic activity code
|
|
49
|
+
domicilioExplotacion: DomicilioExplotacion, // Work address
|
|
50
|
+
trabajadorAgropecuario?: boolean, // Agricultural worker (default false)
|
|
51
|
+
fechaFin?: Date, // Required for fixed-term contracts
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### BajaEmpleado
|
|
56
|
+
```ts
|
|
57
|
+
{ cuil: string, fechaBaja: Date, motivoBaja: number }
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### ModificacionEmpleado
|
|
61
|
+
```ts
|
|
62
|
+
{ cuil: string, fechaInicio: Date, ...optional fields to modify }
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### DatosComplementarios
|
|
66
|
+
```ts
|
|
67
|
+
{
|
|
68
|
+
cuil: string, fechaInicio: Date, situacionRevista: number,
|
|
69
|
+
nivelEducacion?: number, puestoDesempenado?: string,
|
|
70
|
+
convenioColectivo?: string, tipoServicio?: number,
|
|
71
|
+
modalidadLiquidacion?: number, estadoCivil?: number,
|
|
72
|
+
remuneracion?: number, cantidadHorasTrabajadas?: number,
|
|
73
|
+
porcentajeAporteAdicionalSS?: number,
|
|
74
|
+
contribucionTareasDiferenciales?: number,
|
|
75
|
+
codigoSiniestrado?: number, marcaPreaviso?: boolean,
|
|
76
|
+
fechaPreaviso?: Date, conceptoLiquidacion?: number,
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### DatosCBU
|
|
81
|
+
```ts
|
|
82
|
+
{ cuil: string, fechaInicio: Date, cbu: string, tipoCuenta?: number }
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### RelacionFamiliar
|
|
86
|
+
```ts
|
|
87
|
+
{
|
|
88
|
+
cuil: string, fechaInicio: Date, tipoRelacion: number,
|
|
89
|
+
cuilFamiliar?: string, dniFamiliar?: string,
|
|
90
|
+
nombreFamiliar: string, apellidoFamiliar: string,
|
|
91
|
+
fechaNacimiento: Date, discapacitado?: boolean,
|
|
92
|
+
escolaridad?: number, obraSocialFamiliar?: string,
|
|
93
|
+
cuilTitularObraSocial?: string,
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### DomicilioExplotacion
|
|
98
|
+
```ts
|
|
99
|
+
{
|
|
100
|
+
calle: string, numero: string, piso?: string, depto?: string,
|
|
101
|
+
localidad: string, codigoPostal: string, provincia: number,
|
|
102
|
+
telefono?: string, actividadEconomica?: string,
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### F935Output
|
|
107
|
+
```ts
|
|
108
|
+
{ contenido: string, archivo: F935Archivo, resumen: F935Resumen }
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### F935Resumen
|
|
112
|
+
```ts
|
|
113
|
+
{
|
|
114
|
+
totalRegistros: number, altas: number, bajas: number,
|
|
115
|
+
modificaciones: number, datosComplementarios: number,
|
|
116
|
+
cbus: number, familiares: number, domicilios: number,
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Enums
|
|
121
|
+
|
|
122
|
+
### ModalidadContratacion (35 codes, T03 SICOSS)
|
|
123
|
+
0=PROMOVIDA_REDUCCION_0, 1=TIEMPO_PARCIAL_INDETERMINADO,
|
|
124
|
+
2=BECARIOS_RESIDENCIAS, 3=APRENDIZAJE, 4=FOMENTO_EMPLEO_24465,
|
|
125
|
+
5=FOMENTO_EMPLEO_24013, 6=LANZAMIENTO_NUEVA_ACTIVIDAD,
|
|
126
|
+
7=PERIODO_PRUEBA_ANTIGUO, 8=TIEMPO_COMPLETO_INDETERMINADO,
|
|
127
|
+
9=PRACTICA_LABORAL_JOVENES, 10=PASANTIA_SIN_OS, 11=TEMPORADA,
|
|
128
|
+
12=EVENTUAL, 13=TRABAJO_FORMACION, 14=PERIODO_PRUEBA_NUEVO,
|
|
129
|
+
18=DISCAPACITADO_24147, 21=TIEMPO_PARCIAL_PLAZO_FIJO,
|
|
130
|
+
22=TIEMPO_COMPLETO_PLAZO_FIJO, 23=NO_PERMANENTE_22248,
|
|
131
|
+
24=CONSTRUCCION, 25=EMPLEO_PUBLICO_PROVINCIAL, 26=PROGRAMA_EMPLEO,
|
|
132
|
+
27=PASANTIA_CON_OS, 32=PERIODO_PRUEBA, 46=PLANTA_TRANSITORIA,
|
|
133
|
+
49=DIRECTORES_SA, 50=PROMOVIDA_REDUCCION_50, 99=LRT,
|
|
134
|
+
100=PROMOVIDA_REDUCCION_100, 110=AGRARIO_PERMANENTE,
|
|
135
|
+
111=AGRARIO_TEMPORARIO, 112=AGRARIO_PERMANENTE_DISCONTINUO,
|
|
136
|
+
113=AGRARIO_CUADRILLA_FAMILIAR, 301=LEY_26940_INDETERMINADO,
|
|
137
|
+
304=LEY_26940_PARCIAL
|
|
138
|
+
|
|
139
|
+
### MotivoBaja (34 codes)
|
|
140
|
+
0=FALLECIMIENTO, 2=OTRAS_CAUSALES, 7=DESPIDO,
|
|
141
|
+
18=TRANSFERENCIA_CONTRATO, 19=DENUNCIA_TRANSFERENCIA,
|
|
142
|
+
20=CESION_PERSONAL, 21=RENUNCIA, 22=MUTUO_ACUERDO,
|
|
143
|
+
23=DENUNCIA_POR_EMPLEADOR, 24=DENUNCIA_POR_TRABAJADOR,
|
|
144
|
+
25=ABANDONO_TRABAJO, 26=DESPIDO_SIN_CAUSA, 27=FALTA_TRABAJO,
|
|
145
|
+
28=FUERZA_MAYOR, 29=FALLECIMIENTO_EMPLEADOR, 30=VENCIMIENTO_PLAZO,
|
|
146
|
+
31=QUIEBRA, 32=CONCURSO, 33=JUBILACION, 34=INCAPACIDAD,
|
|
147
|
+
35=MUTUO_ACUERDO_AGRARIO, 36=DESPIDO_AGRARIO,
|
|
148
|
+
37=FUERZA_MAYOR_AGRARIO, 38=FIN_APRENDIZAJE_PASANTIA,
|
|
149
|
+
39=DESPIDO_CONSTRUCCION, 40=CESANTIA, 41=EXONERACION,
|
|
150
|
+
46=INICIO_RETIRO_VOLUNTARIO, 47=FIN_RETIRO_VOLUNTARIO,
|
|
151
|
+
52=EXTINCION_MUTUO_ACUERDO, 53=BAJA_OFICIO,
|
|
152
|
+
54=RETIRO_VOLUNTARIO, 55=TRASPASO_RIGI, 99=VENCIMIENTO_PLAZO_FIJO
|
|
153
|
+
|
|
154
|
+
### SituacionRevista (23 codes)
|
|
155
|
+
1=ACTIVO, 5=LICENCIA_MATERNIDAD, 6=SUSPENSION_OTRAS_CAUSALES,
|
|
156
|
+
9=SUSPENSION_223_BIS, 10=LICENCIA_EXCEDENCIA,
|
|
157
|
+
11=LICENCIA_MATERNIDAD_DOWN, 12=LICENCIA_VACACIONES,
|
|
158
|
+
13=LICENCIA_SIN_GOCE, 14=RESERVA_PUESTO,
|
|
159
|
+
15=CESE_TRANSITORIO_ESE, 16=SINIESTRADO_TERCEROS,
|
|
160
|
+
17=REINGRESO_JUDICIAL, 21=TEMPORADA_RESERVA_PUESTO,
|
|
161
|
+
31=ACTIVO_EXTERIOR, 32=LICENCIA_PATERNIDAD,
|
|
162
|
+
33=LICENCIA_FUERZA_MAYOR, 42=EVENTUAL_EU_MES_COMPLETO,
|
|
163
|
+
43=EVENTUAL_EU_MES_INCOMPLETO, 44=CONSERVACION_EMPLEO,
|
|
164
|
+
45=SUSPENSION_DISCIPLINARIA, 48=SUSPENSION_RES_397,
|
|
165
|
+
49=SUSPENSION_PARCIAL_223_BIS, 51=LICENCIA_CANCER_INFANTIL
|
|
166
|
+
|
|
167
|
+
### NivelEducacion
|
|
168
|
+
0=SIN_INSTRUCCION, 1=PRIMARIO_INCOMPLETO, 2=PRIMARIO_COMPLETO,
|
|
169
|
+
3=SECUNDARIO_INCOMPLETO, 4=SECUNDARIO_COMPLETO, 5=TERCIARIO_INCOMPLETO,
|
|
170
|
+
6=TERCIARIO_COMPLETO, 7=UNIVERSITARIO_INCOMPLETO, 8=UNIVERSITARIO_COMPLETO,
|
|
171
|
+
9=POSGRADO_INCOMPLETO, 10=POSGRADO_COMPLETO
|
|
172
|
+
|
|
173
|
+
### EstadoCivil
|
|
174
|
+
1=SOLTERO, 2=CASADO, 3=DIVORCIADO, 4=VIUDO, 5=SEPARADO, 6=UNION_CONVIVENCIAL
|
|
175
|
+
|
|
176
|
+
### TipoRelacionFamiliar
|
|
177
|
+
1=CONYUGE, 2=HIJO, 3=HIJO_DISCAPACITADO, 4=HIJASTRO,
|
|
178
|
+
5=MENOR_GUARDA, 6=PRENATAL, 7=CONVIVIENTE
|
|
179
|
+
|
|
180
|
+
### Provincia (24 codes)
|
|
181
|
+
0=CAPITAL_FEDERAL, 1=BUENOS_AIRES, 2=CATAMARCA, 3=CORDOBA,
|
|
182
|
+
4=CORRIENTES, 5=ENTRE_RIOS, 6=JUJUY, 7=MENDOZA, 8=LA_RIOJA,
|
|
183
|
+
9=SALTA, 10=SAN_JUAN, 11=SAN_LUIS, 12=SANTA_FE,
|
|
184
|
+
13=SANTIAGO_DEL_ESTERO, 14=TUCUMAN, 15=CHACO, 16=CHUBUT,
|
|
185
|
+
17=FORMOSA, 18=MISIONES, 19=NEUQUEN, 20=LA_PAMPA,
|
|
186
|
+
21=RIO_NEGRO, 22=SANTA_CRUZ, 23=TIERRA_DEL_FUEGO
|
|
187
|
+
|
|
188
|
+
### TipoServicio
|
|
189
|
+
1=CON_APORTE_PAMI, 2=SIN_APORTE_PAMI
|
|
190
|
+
|
|
191
|
+
### ModalidadLiquidacion
|
|
192
|
+
1=MENSUAL, 2=QUINCENAL, 3=SEMANAL, 4=DIARIA, 5=POR_HORA,
|
|
193
|
+
6=POR_PIEZA, 7=A_COMISION, 8=JORNAL
|
|
194
|
+
|
|
195
|
+
### TipoCuenta
|
|
196
|
+
1=CAJA_AHORRO, 2=CUENTA_CORRIENTE
|
|
197
|
+
|
|
198
|
+
### Escolaridad
|
|
199
|
+
0=NO_ESCOLAR, 1=PREESCOLAR, 2=PRIMARIA, 3=SECUNDARIA,
|
|
200
|
+
4=TERCIARIA, 5=UNIVERSITARIA
|
|
201
|
+
|
|
202
|
+
### TipoOperacion
|
|
203
|
+
0=ALTA, 1=BAJA, 2=MODIFICACION
|
|
204
|
+
|
|
205
|
+
## Description Maps
|
|
206
|
+
|
|
207
|
+
Each enum has a corresponding description map:
|
|
208
|
+
MODALIDAD_CONTRATACION_DESCRIPCION, MOTIVO_BAJA_DESCRIPCION,
|
|
209
|
+
SITUACION_REVISTA_DESCRIPCION, NIVEL_EDUCACION_DESCRIPCION,
|
|
210
|
+
ESTADO_CIVIL_DESCRIPCION, TIPO_RELACION_FAMILIAR_DESCRIPCION,
|
|
211
|
+
PROVINCIA_DESCRIPCION, MODALIDAD_LIQUIDACION_DESCRIPCION,
|
|
212
|
+
TIPO_CUENTA_DESCRIPCION, ESCOLARIDAD_DESCRIPCION, TIPO_SERVICIO_DESCRIPCION
|
|
213
|
+
|
|
214
|
+
## Validation Rules
|
|
215
|
+
|
|
216
|
+
- CUIL: 11 digits, valid prefixes (20/23/24/27/30/33/34), mod-11 checksum
|
|
217
|
+
- CBU: 22 digits, block 1 (8 digits) and block 2 (14 digits) checksums
|
|
218
|
+
- Dates: must be valid Date objects
|
|
219
|
+
- fechaFin > fechaInicio when both provided
|
|
220
|
+
- fechaFin required for modalidades: TIEMPO_PARCIAL_PLAZO_FIJO, TIEMPO_COMPLETO_PLAZO_FIJO, EVENTUAL, TEMPORADA, APRENDIZAJE, PASANTIA_SIN_OS, PASANTIA_CON_OS, AGRARIO_TEMPORARIO, NO_PERMANENTE_22248
|
|
221
|
+
- Provincia: 0-23
|
|
222
|
+
- Domicilio: calle, numero, localidad, codigoPostal required
|
|
223
|
+
|
|
224
|
+
## Utility Functions
|
|
225
|
+
|
|
226
|
+
- `validateCuil(cuil: string): string` - Validate & normalize CUIL
|
|
227
|
+
- `validateCBU(cbu: string): string` - Validate CBU
|
|
228
|
+
- `normalizeCuil(cuil: string): string` - Remove hyphens
|
|
229
|
+
- `formatCuil(cuil: string): string` - Add hyphens (XX-XXXXXXXX-X)
|
|
230
|
+
|
|
231
|
+
## Error Types
|
|
232
|
+
|
|
233
|
+
- `ArcaEmpleadosError` - Base error (catch-all)
|
|
234
|
+
- `ArcaValidationError` - Validation failures (has `.field?: string`, `.errors: ValidationErrorDetail[]`)
|
|
235
|
+
- `ArcaSerializationError` - File generation failures
|
|
236
|
+
|
|
237
|
+
ValidationErrorDetail: `{ field: string, message: string, value?: unknown }`
|
|
238
|
+
|
|
239
|
+
## File Format
|
|
240
|
+
|
|
241
|
+
Pipe-delimited text. Line types:
|
|
242
|
+
- 00: Header (CUIT|RAZON_SOCIAL|FECHA|COUNT)
|
|
243
|
+
- 01: Relacion laboral (op 0=alta, 1=baja, 2=modificacion)
|
|
244
|
+
- 02: Datos complementarios
|
|
245
|
+
- 03: CBU
|
|
246
|
+
- 04: Relacion familiar
|
|
247
|
+
- 05: Domicilio de explotacion
|
|
248
|
+
|
|
249
|
+
Dates: DDMMYYYY. Booleans: S/N.
|
|
250
|
+
|
|
251
|
+
## Common Patterns
|
|
252
|
+
|
|
253
|
+
```ts
|
|
254
|
+
// Alta + complementarios + CBU (typical onboarding)
|
|
255
|
+
const resultado = empleados
|
|
256
|
+
.alta({ cuil: '...', fechaInicio: new Date(), ... })
|
|
257
|
+
.datosComplementarios({ cuil: '...', fechaInicio: new Date(), ... })
|
|
258
|
+
.cbu({ cuil: '...', fechaInicio: new Date(), cbu: '...' })
|
|
259
|
+
.generar();
|
|
260
|
+
|
|
261
|
+
// Bulk terminations
|
|
262
|
+
empleados.bajasMasivas([
|
|
263
|
+
{ cuil: '...', fechaBaja: new Date(), motivoBaja: MotivoBaja.RENUNCIA },
|
|
264
|
+
{ cuil: '...', fechaBaja: new Date(), motivoBaja: MotivoBaja.DESPIDO_SIN_CAUSA },
|
|
265
|
+
]);
|
|
266
|
+
|
|
267
|
+
// Non-strict mode (skip validation on add)
|
|
268
|
+
const empleados = new ArcaEmpleados({ cuitEmpleador: '...', strict: false });
|
|
269
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ramiidv/arca-empleados",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "TypeScript SDK para gestion de empleados con ARCA (ex AFIP) - Generacion de archivos F935 para altas, bajas y modificaciones",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"llms.txt",
|
|
17
|
+
"LICENSE",
|
|
18
|
+
"README.md"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc",
|
|
22
|
+
"clean": "rm -rf dist",
|
|
23
|
+
"typecheck": "tsc --noEmit",
|
|
24
|
+
"test": "vitest run",
|
|
25
|
+
"test:watch": "vitest",
|
|
26
|
+
"prepublishOnly": "npm run build"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"arca",
|
|
30
|
+
"afip",
|
|
31
|
+
"empleados",
|
|
32
|
+
"f935",
|
|
33
|
+
"argentina",
|
|
34
|
+
"sdk",
|
|
35
|
+
"typescript",
|
|
36
|
+
"simplificacion-registral",
|
|
37
|
+
"alta",
|
|
38
|
+
"baja"
|
|
39
|
+
],
|
|
40
|
+
"author": "ramiidv",
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "git+https://github.com/ramiidv/arca-empleados-sdk.git"
|
|
45
|
+
},
|
|
46
|
+
"homepage": "https://github.com/ramiidv/arca-empleados-sdk#readme",
|
|
47
|
+
"bugs": {
|
|
48
|
+
"url": "https://github.com/ramiidv/arca-empleados-sdk/issues"
|
|
49
|
+
},
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public"
|
|
52
|
+
},
|
|
53
|
+
"engines": {
|
|
54
|
+
"node": ">=18"
|
|
55
|
+
},
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"@ramiidv/arca-common": "^0.1.0"
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@types/node": "^22.0.0",
|
|
61
|
+
"typescript": "^5.7.0",
|
|
62
|
+
"vitest": "^3.1.0"
|
|
63
|
+
}
|
|
64
|
+
}
|