@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.
@@ -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
+ }