@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/dist/f935-builder.js
DELETED
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
import { ArcaValidationError, ArcaSerializationError } from './errors.js';
|
|
2
|
-
import { validateCuil, validateAlta, validateBaja, validateModificacion, validateDatosComplementarios, validateCBUData, validateRelacionFamiliar, validateDomicilio, } from './validators.js';
|
|
3
|
-
import { serializeArchivo } from './serializer.js';
|
|
4
|
-
/**
|
|
5
|
-
* Builder class for generating ARCA F935 bulk employee management files.
|
|
6
|
-
*
|
|
7
|
-
* Supports method chaining for adding records and generates the complete
|
|
8
|
-
* file content via the `generar()` method.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```ts
|
|
12
|
-
* const sdk = new ArcaEmpleados({ cuitEmpleador: '30-71234567-9' });
|
|
13
|
-
* const output = sdk
|
|
14
|
-
* .alta({ cuil: '20-12345678-9', fechaInicio: new Date(), ... })
|
|
15
|
-
* .datosComplementarios({ cuil: '20-12345678-9', ... })
|
|
16
|
-
* .generar();
|
|
17
|
-
*
|
|
18
|
-
* fs.writeFileSync('F935.txt', output.contenido);
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
export class ArcaEmpleados {
|
|
22
|
-
config;
|
|
23
|
-
_registros = [];
|
|
24
|
-
constructor(config) {
|
|
25
|
-
// Validate employer CUIT
|
|
26
|
-
const normalizedCuit = validateCuil(config.cuitEmpleador);
|
|
27
|
-
this.config = {
|
|
28
|
-
cuitEmpleador: normalizedCuit,
|
|
29
|
-
razonSocial: config.razonSocial,
|
|
30
|
-
strict: config.strict ?? true,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
// ---------------------------------------------------------------------------
|
|
34
|
-
// Read-only access to stored records
|
|
35
|
-
// ---------------------------------------------------------------------------
|
|
36
|
-
/** Returns a shallow copy of the stored records. */
|
|
37
|
-
get registros() {
|
|
38
|
-
return [...this._registros];
|
|
39
|
-
}
|
|
40
|
-
// ---------------------------------------------------------------------------
|
|
41
|
-
// Add individual records
|
|
42
|
-
// ---------------------------------------------------------------------------
|
|
43
|
-
/**
|
|
44
|
-
* Adds an employee registration (alta) record.
|
|
45
|
-
* Validates the data if strict mode is enabled.
|
|
46
|
-
*/
|
|
47
|
-
alta(data) {
|
|
48
|
-
if (this.config.strict) {
|
|
49
|
-
validateAlta(data);
|
|
50
|
-
}
|
|
51
|
-
this._registros.push({ tipo: 1, operacion: 0, data });
|
|
52
|
-
return this;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Adds an employee termination (baja) record.
|
|
56
|
-
* Validates the data if strict mode is enabled.
|
|
57
|
-
*/
|
|
58
|
-
baja(data) {
|
|
59
|
-
if (this.config.strict) {
|
|
60
|
-
validateBaja(data);
|
|
61
|
-
}
|
|
62
|
-
this._registros.push({ tipo: 1, operacion: 1, data });
|
|
63
|
-
return this;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Adds an employee modification record.
|
|
67
|
-
* Validates the data if strict mode is enabled.
|
|
68
|
-
*/
|
|
69
|
-
modificacion(data) {
|
|
70
|
-
if (this.config.strict) {
|
|
71
|
-
validateModificacion(data);
|
|
72
|
-
}
|
|
73
|
-
this._registros.push({ tipo: 1, operacion: 2, data });
|
|
74
|
-
return this;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Adds supplementary worker data.
|
|
78
|
-
* Validates the data if strict mode is enabled.
|
|
79
|
-
*/
|
|
80
|
-
datosComplementarios(data) {
|
|
81
|
-
if (this.config.strict) {
|
|
82
|
-
validateDatosComplementarios(data);
|
|
83
|
-
}
|
|
84
|
-
this._registros.push({ tipo: 2, data });
|
|
85
|
-
return this;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Adds a CBU (banking data) record.
|
|
89
|
-
* Validates the data if strict mode is enabled.
|
|
90
|
-
*/
|
|
91
|
-
cbu(data) {
|
|
92
|
-
if (this.config.strict) {
|
|
93
|
-
validateCBUData(data);
|
|
94
|
-
}
|
|
95
|
-
this._registros.push({ tipo: 3, data });
|
|
96
|
-
return this;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Adds a family relationship record.
|
|
100
|
-
* Validates the data if strict mode is enabled.
|
|
101
|
-
*/
|
|
102
|
-
relacionFamiliar(data) {
|
|
103
|
-
if (this.config.strict) {
|
|
104
|
-
validateRelacionFamiliar(data);
|
|
105
|
-
}
|
|
106
|
-
this._registros.push({ tipo: 4, data });
|
|
107
|
-
return this;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Adds a work location address record.
|
|
111
|
-
* Validates the data if strict mode is enabled.
|
|
112
|
-
*/
|
|
113
|
-
domicilioExplotacion(data) {
|
|
114
|
-
if (this.config.strict) {
|
|
115
|
-
validateCuil(data.cuil);
|
|
116
|
-
validateDomicilio(data);
|
|
117
|
-
}
|
|
118
|
-
this._registros.push({ tipo: 5, data });
|
|
119
|
-
return this;
|
|
120
|
-
}
|
|
121
|
-
// ---------------------------------------------------------------------------
|
|
122
|
-
// Bulk operations
|
|
123
|
-
// ---------------------------------------------------------------------------
|
|
124
|
-
/**
|
|
125
|
-
* Adds multiple employee registrations (altas) at once.
|
|
126
|
-
* Validates each record if strict mode is enabled.
|
|
127
|
-
* Stops at the first validation error.
|
|
128
|
-
*/
|
|
129
|
-
altasMasivas(data) {
|
|
130
|
-
for (const item of data) {
|
|
131
|
-
this.alta(item);
|
|
132
|
-
}
|
|
133
|
-
return this;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Adds multiple employee terminations (bajas) at once.
|
|
137
|
-
* Validates each record if strict mode is enabled.
|
|
138
|
-
* Stops at the first validation error.
|
|
139
|
-
*/
|
|
140
|
-
bajasMasivas(data) {
|
|
141
|
-
for (const item of data) {
|
|
142
|
-
this.baja(item);
|
|
143
|
-
}
|
|
144
|
-
return this;
|
|
145
|
-
}
|
|
146
|
-
// ---------------------------------------------------------------------------
|
|
147
|
-
// Generate output
|
|
148
|
-
// ---------------------------------------------------------------------------
|
|
149
|
-
/**
|
|
150
|
-
* Generates the F935 file content and metadata.
|
|
151
|
-
* Validates all records and serializes them to the pipe-delimited format.
|
|
152
|
-
*
|
|
153
|
-
* @throws ArcaValidationError if any record fails validation.
|
|
154
|
-
* @throws ArcaSerializationError if serialization fails.
|
|
155
|
-
*/
|
|
156
|
-
generar() {
|
|
157
|
-
if (this._registros.length === 0) {
|
|
158
|
-
throw new ArcaValidationError('No hay registros para generar el archivo.', [{ field: 'registros', message: 'Debe agregar al menos un registro antes de generar el archivo' }]);
|
|
159
|
-
}
|
|
160
|
-
const archivo = {
|
|
161
|
-
cuitEmpleador: this.config.cuitEmpleador,
|
|
162
|
-
razonSocial: this.config.razonSocial,
|
|
163
|
-
fechaGeneracion: new Date(),
|
|
164
|
-
registros: [...this._registros],
|
|
165
|
-
cantidadRegistros: this._registros.length,
|
|
166
|
-
};
|
|
167
|
-
let contenido;
|
|
168
|
-
try {
|
|
169
|
-
contenido = serializeArchivo(archivo);
|
|
170
|
-
}
|
|
171
|
-
catch (error) {
|
|
172
|
-
if (error instanceof ArcaSerializationError) {
|
|
173
|
-
throw error;
|
|
174
|
-
}
|
|
175
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
176
|
-
throw new ArcaSerializationError(`Error al generar el archivo F935: ${message}`);
|
|
177
|
-
}
|
|
178
|
-
return {
|
|
179
|
-
contenido,
|
|
180
|
-
archivo,
|
|
181
|
-
resumen: this.resumen(),
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
// ---------------------------------------------------------------------------
|
|
185
|
-
// Utilities
|
|
186
|
-
// ---------------------------------------------------------------------------
|
|
187
|
-
/**
|
|
188
|
-
* Returns a summary of the currently stored records.
|
|
189
|
-
*/
|
|
190
|
-
resumen() {
|
|
191
|
-
let altas = 0;
|
|
192
|
-
let bajas = 0;
|
|
193
|
-
let modificaciones = 0;
|
|
194
|
-
let datosComp = 0;
|
|
195
|
-
let cbus = 0;
|
|
196
|
-
let familiares = 0;
|
|
197
|
-
let domicilios = 0;
|
|
198
|
-
for (const reg of this._registros) {
|
|
199
|
-
switch (reg.tipo) {
|
|
200
|
-
case 1:
|
|
201
|
-
switch (reg.operacion) {
|
|
202
|
-
case 0:
|
|
203
|
-
altas++;
|
|
204
|
-
break;
|
|
205
|
-
case 1:
|
|
206
|
-
bajas++;
|
|
207
|
-
break;
|
|
208
|
-
case 2:
|
|
209
|
-
modificaciones++;
|
|
210
|
-
break;
|
|
211
|
-
}
|
|
212
|
-
break;
|
|
213
|
-
case 2:
|
|
214
|
-
datosComp++;
|
|
215
|
-
break;
|
|
216
|
-
case 3:
|
|
217
|
-
cbus++;
|
|
218
|
-
break;
|
|
219
|
-
case 4:
|
|
220
|
-
familiares++;
|
|
221
|
-
break;
|
|
222
|
-
case 5:
|
|
223
|
-
domicilios++;
|
|
224
|
-
break;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return {
|
|
228
|
-
totalRegistros: this._registros.length,
|
|
229
|
-
altas,
|
|
230
|
-
bajas,
|
|
231
|
-
modificaciones,
|
|
232
|
-
datosComplementarios: datosComp,
|
|
233
|
-
cbus,
|
|
234
|
-
familiares,
|
|
235
|
-
domicilios,
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Clears all stored records.
|
|
240
|
-
*/
|
|
241
|
-
limpiar() {
|
|
242
|
-
this._registros = [];
|
|
243
|
-
return this;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
//# sourceMappingURL=f935-builder.js.map
|
package/dist/f935-builder.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"f935-builder.js","sourceRoot":"","sources":["../src/f935-builder.ts"],"names":[],"mappings":"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"}
|