@ramiidv/arca-sdk 0.3.0 → 1.1.3

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/dist/arca.js CHANGED
@@ -1,34 +1,70 @@
1
+ import { EventEmitter } from "node:events";
1
2
  import { WsaaClient } from "./wsaa.js";
2
3
  import { WsfeClient } from "./wsfe.js";
4
+ import { WsfexClient } from "./wsfex.js";
5
+ import { PadronClient } from "./padron.js";
3
6
  import { buildInvoiceDetail, parseFacturaResult, toDateString, calcularTotales, } from "./facturacion.js";
4
7
  import { ArcaError } from "./errors.js";
5
8
  import { NOTA_CREDITO_MAP, NOTA_DEBITO_MAP } from "./constants.js";
6
9
  export class Arca {
7
10
  wsaa;
8
11
  wsfe;
12
+ wsfex;
13
+ padron;
9
14
  cuit;
10
15
  production;
16
+ emitter = new EventEmitter();
17
+ onEventCb;
11
18
  constructor(config) {
12
19
  this.cuit = config.cuit;
13
20
  this.production = config.production ?? false;
21
+ this.onEventCb = config.onEvent;
14
22
  const timeoutMs = config.requestTimeoutMs ?? 30_000;
23
+ const retries = config.retries ?? 1;
24
+ const retryDelayMs = config.retryDelayMs ?? 1_000;
25
+ const emit = (event) => {
26
+ this.onEventCb?.(event);
27
+ this.emitter.emit(event.type, event);
28
+ };
29
+ const clientOpts = { timeoutMs, retries, retryDelayMs, onEvent: emit };
15
30
  this.wsaa = new WsaaClient({
16
31
  cert: config.cert,
17
32
  key: config.key,
18
33
  production: this.production,
19
34
  tokenTTLMinutes: config.tokenTTLMinutes ?? 720,
20
- timeoutMs,
35
+ ...clientOpts,
21
36
  });
22
- this.wsfe = new WsfeClient(this.production, timeoutMs);
37
+ this.wsfe = new WsfeClient(this.production, clientOpts);
38
+ this.wsfex = new WsfexClient(this.production, clientOpts);
39
+ this.padron = new PadronClient(this.production, clientOpts);
23
40
  }
24
41
  // ============================================================
25
- // Auth helpers
42
+ // Eventos
26
43
  // ============================================================
27
44
  /**
28
- * Obtiene las credenciales de autenticación para WSFE.
45
+ * Suscribirse a eventos del SDK.
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * arca.on("request:end", (e) => console.log(`${e.method} took ${e.durationMs}ms`));
50
+ * arca.on("auth:login", (e) => console.log(`Login ${e.service} in ${e.durationMs}ms`));
51
+ * arca.on("request:retry", (e) => console.warn(`Retry #${e.attempt}: ${e.error}`));
52
+ * ```
29
53
  */
30
- async getAuth() {
31
- const ticket = await this.wsaa.getAccessTicket("wsfe");
54
+ on(event, handler) {
55
+ this.emitter.on(event, handler);
56
+ return this;
57
+ }
58
+ /** Desuscribirse de un evento. */
59
+ off(event, handler) {
60
+ this.emitter.off(event, handler);
61
+ return this;
62
+ }
63
+ // ============================================================
64
+ // Auth helpers
65
+ // ============================================================
66
+ async getAuth(service = "wsfe") {
67
+ const ticket = await this.wsaa.getAccessTicket(service);
32
68
  return {
33
69
  Token: ticket.token,
34
70
  Sign: ticket.sign,
@@ -36,71 +72,30 @@ export class Arca {
36
72
  };
37
73
  }
38
74
  // ============================================================
39
- // Facturación - Métodos principales
75
+ // Facturación - Métodos principales (raw)
40
76
  // ============================================================
41
- /**
42
- * Crea una factura y obtiene el CAE.
43
- *
44
- * @example
45
- * ```ts
46
- * const result = await arca.crearFactura({
47
- * PtoVta: 1,
48
- * CbteTipo: CbteTipo.FACTURA_B,
49
- * invoices: [{
50
- * Concepto: Concepto.PRODUCTOS,
51
- * DocTipo: DocTipo.CONSUMIDOR_FINAL,
52
- * DocNro: 0,
53
- * CbteDesde: nextNum,
54
- * CbteHasta: nextNum,
55
- * CbteFch: "20260328",
56
- * ImpTotal: 121,
57
- * ImpTotConc: 0,
58
- * ImpNeto: 100,
59
- * ImpOpEx: 0,
60
- * ImpTrib: 0,
61
- * ImpIVA: 21,
62
- * MonId: Moneda.PESOS,
63
- * MonCotiz: 1,
64
- * Iva: [{ Id: IvaTipo.IVA_21, BaseImp: 100, Importe: 21 }],
65
- * }],
66
- * });
67
- * ```
68
- */
77
+ /** Solicita CAE para uno o más comprobantes (API raw). */
69
78
  async crearFactura(request) {
70
79
  const auth = await this.getAuth();
71
80
  return this.wsfe.solicitarCAE(auth, request);
72
81
  }
73
- /**
74
- * Obtiene el último número de comprobante autorizado.
75
- * Útil para calcular el siguiente número antes de crear una factura.
76
- */
82
+ /** Último número de comprobante autorizado. */
77
83
  async ultimoComprobante(ptoVta, cbteTipo) {
78
84
  const auth = await this.getAuth();
79
85
  return this.wsfe.ultimoComprobante(auth, ptoVta, cbteTipo);
80
86
  }
81
- /**
82
- * Obtiene el siguiente número de comprobante (último + 1).
83
- */
87
+ /** Siguiente número de comprobante (último + 1). */
84
88
  async siguienteComprobante(ptoVta, cbteTipo) {
85
89
  const ultimo = await this.ultimoComprobante(ptoVta, cbteTipo);
86
90
  return ultimo + 1;
87
91
  }
88
- /**
89
- * Crea una factura automáticamente calculando el siguiente número de comprobante.
90
- * Simplifica el flujo más común: obtener número → crear factura.
91
- */
92
+ /** Crea factura obteniendo el número automáticamente (API raw). */
92
93
  async crearFacturaAuto(ptoVta, cbteTipo, invoice) {
93
94
  const nextNum = await this.siguienteComprobante(ptoVta, cbteTipo);
94
95
  return this.crearFactura({
95
96
  PtoVta: ptoVta,
96
97
  CbteTipo: cbteTipo,
97
- invoices: [
98
- {
99
- ...invoice,
100
- CbteDesde: nextNum,
101
- CbteHasta: nextNum,
102
- },
103
- ],
98
+ invoices: [{ ...invoice, CbteDesde: nextNum, CbteHasta: nextNum }],
104
99
  });
105
100
  }
106
101
  // ============================================================
@@ -109,22 +104,6 @@ export class Arca {
109
104
  /**
110
105
  * Crea una factura con API simplificada.
111
106
  * Calcula automáticamente IVA, totales, y número de comprobante.
112
- *
113
- * @example
114
- * ```ts
115
- * const result = await arca.facturar({
116
- * ptoVta: 1,
117
- * cbteTipo: CbteTipo.FACTURA_B,
118
- * items: [
119
- * { neto: 1000, iva: IvaTipo.IVA_21 },
120
- * { neto: 500, iva: IvaTipo.IVA_10_5 },
121
- * ],
122
- * });
123
- *
124
- * if (result.aprobada) {
125
- * console.log(`CAE: ${result.cae}, Cbte: ${result.cbteNro}`);
126
- * }
127
- * ```
128
107
  */
129
108
  async facturar(opts) {
130
109
  const nextNum = await this.siguienteComprobante(opts.ptoVta, opts.cbteTipo);
@@ -137,21 +116,7 @@ export class Arca {
137
116
  return parseFacturaResult(result, importes);
138
117
  }
139
118
  /**
140
- * Crea una nota de crédito asociada a un comprobante original.
141
- * El tipo de NC se infiere automáticamente del tipo del comprobante original.
142
- *
143
- * @example
144
- * ```ts
145
- * const result = await arca.notaCredito({
146
- * ptoVta: 1,
147
- * comprobanteOriginal: {
148
- * tipo: CbteTipo.FACTURA_B,
149
- * ptoVta: 1,
150
- * nro: 5,
151
- * },
152
- * items: [{ neto: 500, iva: IvaTipo.IVA_21 }],
153
- * });
154
- * ```
119
+ * Crea una nota de crédito. Tipo de NC inferido del comprobante original.
155
120
  */
156
121
  async notaCredito(opts) {
157
122
  const cbteTipo = NOTA_CREDITO_MAP[opts.comprobanteOriginal.tipo];
@@ -161,24 +126,7 @@ export class Arca {
161
126
  return this.facturarConAsociado(cbteTipo, opts);
162
127
  }
163
128
  /**
164
- * Crea una nota de débito asociada a un comprobante original.
165
- * El tipo de ND se infiere automáticamente del tipo del comprobante original.
166
- *
167
- * @example
168
- * ```ts
169
- * const result = await arca.notaDebito({
170
- * ptoVta: 1,
171
- * comprobanteOriginal: {
172
- * tipo: CbteTipo.FACTURA_A,
173
- * ptoVta: 1,
174
- * nro: 10,
175
- * fecha: "20260301",
176
- * },
177
- * docTipo: DocTipo.CUIT,
178
- * docNro: 20123456789,
179
- * items: [{ neto: 200, iva: IvaTipo.IVA_21 }],
180
- * });
181
- * ```
129
+ * Crea una nota de débito. Tipo de ND inferido del comprobante original.
182
130
  */
183
131
  async notaDebito(opts) {
184
132
  const cbteTipo = NOTA_DEBITO_MAP[opts.comprobanteOriginal.tipo];
@@ -189,13 +137,9 @@ export class Arca {
189
137
  }
190
138
  async facturarConAsociado(cbteTipo, opts) {
191
139
  const orig = opts.comprobanteOriginal;
192
- const fullOpts = {
193
- ...opts,
194
- cbteTipo,
195
- };
140
+ const fullOpts = { ...opts, cbteTipo };
196
141
  const nextNum = await this.siguienteComprobante(opts.ptoVta, cbteTipo);
197
142
  const { detail, importes } = buildInvoiceDetail(fullOpts, nextNum);
198
- // Agregar comprobante asociado
199
143
  detail.CbtesAsoc = [
200
144
  {
201
145
  Tipo: orig.tipo,
@@ -212,80 +156,311 @@ export class Arca {
212
156
  });
213
157
  return parseFacturaResult(result, importes);
214
158
  }
215
- /**
216
- * Consulta un comprobante previamente autorizado.
217
- */
159
+ /** Consulta un comprobante previamente autorizado. */
218
160
  async consultarComprobante(cbteTipo, ptoVta, cbteNro) {
219
161
  const auth = await this.getAuth();
220
162
  return this.wsfe.consultarComprobante(auth, cbteTipo, ptoVta, cbteNro);
221
163
  }
222
164
  // ============================================================
223
- // Estado y parámetros
165
+ // WSFEX - Facturación de Exportación
166
+ // ============================================================
167
+ /** Autoriza un comprobante de exportación (WSFEX). */
168
+ async crearFacturaExportacion(invoice) {
169
+ const auth = await this.getAuth("wsfex");
170
+ return this.wsfex.authorize(auth, invoice);
171
+ }
172
+ /** Último número de comprobante de exportación autorizado. */
173
+ async ultimoComprobanteExpo(ptoVta, cbteTipo) {
174
+ const auth = await this.getAuth("wsfex");
175
+ return this.wsfex.getLastCmp(auth, ptoVta, cbteTipo);
176
+ }
177
+ /** Siguiente número de comprobante de exportación. */
178
+ async siguienteComprobanteExpo(ptoVta, cbteTipo) {
179
+ const ultimo = await this.ultimoComprobanteExpo(ptoVta, cbteTipo);
180
+ return ultimo + 1;
181
+ }
182
+ /** Último ID de request WSFEX. */
183
+ async ultimoIdExpo() {
184
+ const auth = await this.getAuth("wsfex");
185
+ return this.wsfex.getLastId(auth);
186
+ }
187
+ /** Consulta un comprobante de exportación. */
188
+ async consultarComprobanteExpo(cbteTipo, ptoVta, cbteNro) {
189
+ const auth = await this.getAuth("wsfex");
190
+ return this.wsfex.getCmp(auth, cbteTipo, ptoVta, cbteNro);
191
+ }
192
+ /** Estado de los servidores WSFEX. */
193
+ async serverStatusExpo() {
194
+ return this.wsfex.serverStatus();
195
+ }
196
+ /** Tipos de comprobante de exportación. */
197
+ async getTiposCbteExpo() {
198
+ const auth = await this.getAuth("wsfex");
199
+ return this.wsfex.getTiposCbte(auth);
200
+ }
201
+ /** Monedas (WSFEX). */
202
+ async getMonedasExpo() {
203
+ const auth = await this.getAuth("wsfex");
204
+ return this.wsfex.getMonedas(auth);
205
+ }
206
+ /** Países destino de exportación. */
207
+ async getPaisesExpo() {
208
+ const auth = await this.getAuth("wsfex");
209
+ return this.wsfex.getPaises(auth);
210
+ }
211
+ /** Idiomas disponibles (WSFEX). */
212
+ async getIdiomasExpo() {
213
+ const auth = await this.getAuth("wsfex");
214
+ return this.wsfex.getIdiomas(auth);
215
+ }
216
+ /** Incoterms disponibles. */
217
+ async getIncotermsExpo() {
218
+ const auth = await this.getAuth("wsfex");
219
+ return this.wsfex.getIncoterms(auth);
220
+ }
221
+ /** Unidades de medida (WSFEX). */
222
+ async getUMedExpo() {
223
+ const auth = await this.getAuth("wsfex");
224
+ return this.wsfex.getUMed(auth);
225
+ }
226
+ /** Tipos de exportación. */
227
+ async getTiposExpo() {
228
+ const auth = await this.getAuth("wsfex");
229
+ return this.wsfex.getTiposExpo(auth);
230
+ }
231
+ /** CUITs de países. */
232
+ async getCuitsPaisExpo() {
233
+ const auth = await this.getAuth("wsfex");
234
+ return this.wsfex.getCuitsPais(auth);
235
+ }
236
+ /**
237
+ * Crea una factura de exportación con API simplificada.
238
+ * Obtiene automáticamente el ID y número de comprobante.
239
+ */
240
+ async facturarExpo(opts) {
241
+ const auth = await this.getAuth("wsfex");
242
+ const [lastId, nextNum] = await Promise.all([
243
+ this.wsfex.getLastId(auth),
244
+ this.wsfex.getLastCmp(auth, opts.ptoVta, opts.cbteTipo).then((n) => n + 1),
245
+ ]);
246
+ const fecha = opts.fecha ? toDateString(opts.fecha) : toDateString(new Date());
247
+ const items = opts.items.map((item) => ({
248
+ Pro_codigo: item.codigo,
249
+ Pro_ds: item.descripcion,
250
+ Pro_qty: item.cantidad,
251
+ Pro_umed: item.unidad,
252
+ Pro_precio_uni: item.precioUnitario,
253
+ Pro_bonificacion: item.bonificacion ?? 0,
254
+ Pro_total_item: Math.round((item.cantidad * item.precioUnitario - (item.bonificacion ?? 0)) * 100) / 100,
255
+ }));
256
+ const invoice = {
257
+ Id: lastId + 1,
258
+ Cbte_Tipo: opts.cbteTipo,
259
+ Fecha_cbte: fecha,
260
+ Punto_vta: opts.ptoVta,
261
+ Cbte_nro: nextNum,
262
+ Tipo_expo: opts.tipoExpo,
263
+ Permiso_existente: opts.permisoExistente ?? "N",
264
+ Dst_cmp: opts.pais,
265
+ Cliente: opts.cliente.nombre,
266
+ Cuit_pais_cliente: opts.cliente.cuitPais,
267
+ Domicilio_cliente: opts.cliente.domicilio,
268
+ Id_impositivo: opts.cliente.idImpositivo,
269
+ Moneda_Id: opts.moneda,
270
+ Moneda_ctz: opts.cotizacion,
271
+ Idioma_cbte: opts.idioma ?? 1,
272
+ Forma_pago: opts.formaPago,
273
+ Items: items,
274
+ };
275
+ if (opts.incoterms)
276
+ invoice.Incoterms = opts.incoterms;
277
+ if (opts.incotermsDes)
278
+ invoice.Incoterms_Ds = opts.incotermsDes;
279
+ if (opts.obsComerciales)
280
+ invoice.Obs_comerciales = opts.obsComerciales;
281
+ if (opts.obs)
282
+ invoice.Obs = opts.obs;
283
+ if (opts.permisos)
284
+ invoice.Permisos = opts.permisos;
285
+ if (opts.cbtesAsoc)
286
+ invoice.Cmps_asoc = opts.cbtesAsoc;
287
+ const result = await this.wsfex.authorize(auth, invoice);
288
+ const authResult = result.FEXResultAuth;
289
+ const aprobada = authResult?.Resultado === "A";
290
+ return {
291
+ aprobada,
292
+ cae: aprobada ? authResult?.Cae : undefined,
293
+ caeVencimiento: aprobada ? authResult?.Fch_venc_Cae : undefined,
294
+ cbteNro: Number(authResult?.Cbte_nro ?? nextNum),
295
+ ptoVta: Number(authResult?.Punto_vta ?? opts.ptoVta),
296
+ cbteTipo: Number(authResult?.Cbte_tipo ?? opts.cbteTipo),
297
+ obs: authResult?.Obs,
298
+ raw: result,
299
+ };
300
+ }
301
+ // ============================================================
302
+ // CAEA - Autorización Anticipada
303
+ // ============================================================
304
+ /**
305
+ * Solicita un CAEA para un período y quincena.
306
+ * @param periodo - Período en formato YYYYMM
307
+ * @param orden - 1 = primera quincena, 2 = segunda quincena
308
+ */
309
+ async solicitarCAEA(periodo, orden) {
310
+ const auth = await this.getAuth();
311
+ return this.wsfe.solicitarCAEA(auth, periodo, orden);
312
+ }
313
+ /** Consulta un CAEA previamente solicitado. */
314
+ async consultarCAEA(periodo, orden) {
315
+ const auth = await this.getAuth();
316
+ return this.wsfe.consultarCAEA(auth, periodo, orden);
317
+ }
318
+ /** Informa comprobantes emitidos con un CAEA. */
319
+ async registrarCAEA(request) {
320
+ const auth = await this.getAuth();
321
+ return this.wsfe.registrarCAEA(auth, request);
322
+ }
323
+ /**
324
+ * Registra una factura emitida con CAEA (API simplificada).
325
+ * Equivale a `facturar()` pero usando un CAEA pre-solicitado.
326
+ * Calcula automáticamente IVA, totales, y número de comprobante.
327
+ *
328
+ * @example
329
+ * ```ts
330
+ * const caea = await arca.solicitarCAEA("202604", 1);
331
+ *
332
+ * const result = await arca.registrarFacturaCAEA(caea.CAEA, {
333
+ * ptoVta: 1,
334
+ * cbteTipo: CbteTipo.FACTURA_B,
335
+ * items: [{ neto: 100, iva: IvaTipo.IVA_21 }],
336
+ * });
337
+ * ```
338
+ */
339
+ async registrarFacturaCAEA(caea, opts) {
340
+ const nextNum = await this.siguienteComprobante(opts.ptoVta, opts.cbteTipo);
341
+ const { detail, importes } = buildInvoiceDetail(opts, nextNum);
342
+ const result = await this.registrarCAEA({
343
+ PtoVta: opts.ptoVta,
344
+ CbteTipo: opts.cbteTipo,
345
+ invoices: [{ ...detail, CAEA: caea }],
346
+ });
347
+ return parseFacturaResult(result, importes);
348
+ }
349
+ /** Informa que no hubo movimientos para un CAEA en un punto de venta. */
350
+ async sinMovimientoCAEA(caea, ptoVta) {
351
+ const auth = await this.getAuth();
352
+ return this.wsfe.sinMovimientoCAEA(auth, caea, ptoVta);
353
+ }
354
+ // ============================================================
355
+ // Padrón - Consulta de contribuyentes
224
356
  // ============================================================
225
357
  /**
226
- * Verifica el estado de los servidores de ARCA.
227
- * No requiere autenticación.
358
+ * Consulta datos de un contribuyente por CUIT (padrón A13 - básico).
359
+ * Retorna nombre, tipo de persona, estado, impuestos.
360
+ */
361
+ async consultarCuit(cuit) {
362
+ const auth = await this.getAuth("ws_sr_padron_a13");
363
+ return this.padron.getPersonaA13(auth, cuit);
364
+ }
365
+ /**
366
+ * Consulta datos detallados de un contribuyente (padrón A5).
367
+ * Requiere autorización adicional en el certificado.
368
+ * Incluye domicilio fiscal, actividades, etc.
228
369
  */
370
+ async consultarCuitDetalle(cuit) {
371
+ const auth = await this.getAuth("ws_sr_padron_a5");
372
+ return this.padron.getPersonaA5(auth, cuit);
373
+ }
374
+ // ============================================================
375
+ // Estado y parámetros WSFE
376
+ // ============================================================
377
+ /** Estado de los servidores WSFE. No requiere autenticación. */
229
378
  async serverStatus() {
230
379
  return this.wsfe.serverStatus();
231
380
  }
232
- /** Obtiene los tipos de comprobante disponibles. */
233
381
  async getTiposComprobante() {
234
382
  const auth = await this.getAuth();
235
383
  return this.wsfe.getTiposComprobante(auth);
236
384
  }
237
- /** Obtiene los tipos de concepto disponibles (Productos, Servicios, Productos y Servicios). */
238
385
  async getTiposConcepto() {
239
386
  const auth = await this.getAuth();
240
387
  return this.wsfe.getTiposConcepto(auth);
241
388
  }
242
- /** Obtiene los tipos de documento disponibles. */
243
389
  async getTiposDocumento() {
244
390
  const auth = await this.getAuth();
245
391
  return this.wsfe.getTiposDocumento(auth);
246
392
  }
247
- /** Obtiene los tipos de IVA disponibles. */
248
393
  async getTiposIva() {
249
394
  const auth = await this.getAuth();
250
395
  return this.wsfe.getTiposIva(auth);
251
396
  }
252
- /** Obtiene las monedas disponibles. */
253
397
  async getMonedas() {
254
398
  const auth = await this.getAuth();
255
399
  return this.wsfe.getMonedas(auth);
256
400
  }
257
- /** Obtiene los tipos de tributo disponibles. */
258
401
  async getTiposTributo() {
259
402
  const auth = await this.getAuth();
260
403
  return this.wsfe.getTiposTributo(auth);
261
404
  }
262
- /** Obtiene los tipos de datos opcionales disponibles. */
263
405
  async getTiposOpcional() {
264
406
  const auth = await this.getAuth();
265
407
  return this.wsfe.getTiposOpcional(auth);
266
408
  }
267
- /** Obtiene los puntos de venta habilitados. */
268
409
  async getPuntosVenta() {
269
410
  const auth = await this.getAuth();
270
411
  return this.wsfe.getPuntosVenta(auth);
271
412
  }
272
- /** Obtiene la cotización de una moneda. */
273
413
  async getCotizacion(monedaId) {
274
414
  const auth = await this.getAuth();
275
415
  return this.wsfe.getCotizacion(auth, monedaId);
276
416
  }
277
- /** Obtiene la cantidad máxima de registros por request. */
278
417
  async getCantMaxRegistros() {
279
418
  const auth = await this.getAuth();
280
419
  return this.wsfe.getCantMaxRegistros(auth);
281
420
  }
282
421
  // ============================================================
283
- // Utilidades
422
+ // Utilidades estáticas
284
423
  // ============================================================
285
424
  /**
286
- * Extrae el CAE y detalles de respuesta de FECAESolicitar.
287
- * Helper para simplificar el procesamiento del resultado.
425
+ * Genera la URL del QR oficial de ARCA para un comprobante autorizado.
426
+ *
427
+ * @example
428
+ * ```ts
429
+ * const url = Arca.generateQRUrl({
430
+ * fecha: "2026-03-28",
431
+ * cuit: 20123456789,
432
+ * ptoVta: 1,
433
+ * tipoCmp: CbteTipo.FACTURA_B,
434
+ * nroCmp: 150,
435
+ * importe: 121,
436
+ * moneda: "PES",
437
+ * ctz: 1,
438
+ * tipoDocRec: DocTipo.CONSUMIDOR_FINAL,
439
+ * nroDocRec: 0,
440
+ * codAut: 73429843294823,
441
+ * });
442
+ * ```
288
443
  */
444
+ static generateQRUrl(input) {
445
+ const payload = {
446
+ ver: 1,
447
+ fecha: input.fecha,
448
+ cuit: input.cuit,
449
+ ptoVta: input.ptoVta,
450
+ tipoCmp: input.tipoCmp,
451
+ nroCmp: input.nroCmp,
452
+ importe: input.importe,
453
+ moneda: input.moneda,
454
+ ctz: input.ctz,
455
+ tipoDocRec: input.tipoDocRec,
456
+ nroDocRec: input.nroDocRec,
457
+ tipoCodAut: input.tipoCodAut ?? "E",
458
+ codAut: input.codAut,
459
+ };
460
+ const base64 = Buffer.from(JSON.stringify(payload)).toString("base64");
461
+ return `https://www.afip.gob.ar/fe/qr/?p=${base64}`;
462
+ }
463
+ /** Extrae CAE del resultado raw de FECAESolicitar. */
289
464
  static extractCAE(result) {
290
465
  const detArr = Array.isArray(result.FeDetResp.FECAEDetResponse)
291
466
  ? result.FeDetResp.FECAEDetResponse
@@ -299,34 +474,20 @@ export class Arca {
299
474
  caeFchVto: firstApproved?.CAEFchVto,
300
475
  };
301
476
  }
302
- /**
303
- * Formatea una fecha Date a formato YYYYMMDD requerido por ARCA.
304
- * Usa timezone America/Argentina/Buenos_Aires.
305
- */
477
+ /** Formatea Date a YYYYMMDD (timezone Argentina). */
306
478
  static formatDate(date) {
307
479
  return toDateString(date);
308
480
  }
309
- /**
310
- * Calcula los importes de una factura a partir de line items.
311
- * Útil para previsualizar totales antes de enviar a ARCA.
312
- *
313
- * @example
314
- * ```ts
315
- * const { importes } = Arca.calcularTotales([
316
- * { neto: 1000, iva: IvaTipo.IVA_21 },
317
- * { neto: 500, iva: IvaTipo.IVA_10_5 },
318
- * ]);
319
- * console.log(importes.total); // 1762.5
320
- * ```
321
- */
481
+ /** Calcula importes e IVA desde line items. Para previsualizar sin enviar. */
322
482
  static calcularTotales(items, opts) {
323
483
  return calcularTotales(items, opts);
324
484
  }
325
- /**
326
- * Invalida los tickets de acceso cacheados.
327
- */
485
+ /** Invalida los tickets de acceso cacheados. */
328
486
  clearAuthCache() {
329
487
  this.wsaa.clearTicket("wsfe");
488
+ this.wsaa.clearTicket("wsfex");
489
+ this.wsaa.clearTicket("ws_sr_padron_a5");
490
+ this.wsaa.clearTicket("ws_sr_padron_a13");
330
491
  }
331
492
  }
332
493
  //# sourceMappingURL=arca.js.map
package/dist/arca.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"arca.js","sourceRoot":"","sources":["../src/arca.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arca.js","sourceRoot":"","sources":["../src/arca.ts"],"names":[],"mappings":"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"}