@ramiidv/arca-mtxca 0.5.0 → 0.6.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 CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 739b0d8: Auditoría contra el Manual del desarrollador WSMTXCA v0.25.8.
8
+
9
+ **Cambios de comportamiento:**
10
+
11
+ - **FCE MiPyME:** `fechaVencimientoPago` ahora es obligatoria en 201 y 206 y no corresponde en 202, 203, 207 y 208, cualquiera sea el concepto (148/149 en `autorizar`, 764/765 en `informarComprobanteCAEA`). Antes se exigía solo con concepto 2 o 3 y se rechazaba con concepto 1, lo que impedía emitir una FCE de productos.
12
+ - **`condicionIVAReceptor` (RG 5616) obligatoria localmente:** `autorizar()` e `informarComprobanteCAEA()` lanzan `ArcaValidationError` si falta (ARCA hoy la observa con 190/390 y pasará a rechazar). En `autorizar()` se puede omitir la validación local con `{ validarImportes: false }`.
13
+ - **Redondeo Round Half Even:** los importes, cantidades, precios, bonificaciones y cotizaciones se redondean mitad al par, como indica el manual (`8.565` → `8.56`, `1.005` → `1.00`; antes, mitad hacia afuera: `8.57`, `1.01`). Aplica a lo que se envía, a la validación de importes y a `roundImporte()` / `roundDecimal()`.
14
+
15
+ Nuevas validaciones locales (citan el código de ARCA): `cancelaEnMismaMonedaExtranjera: 'S'` solo en 1, 6, 51, 201 y 206 (118); descripción de cada tributo en FCE (302); compradores solo con concepto 1 (432) y uno solo en FCE (433); en CAEA no se admiten compradores (753); el IVA de las bonificaciones no puede superar el de su alícuota (516); notas de débito/crédito 2, 3, 7, 8, 52 y 53 con comprobantes asociados o período, no ambos (160/161 en CAE, 778/779 en CAEA).
16
+
17
+ Nuevo:
18
+
19
+ - `urlQR()` (método de `ArcaMtxca` y función exportada): URL del código QR (RG 4892) desde el request y el resultado de `autorizar` / `informarComprobanteCAEA`, o desde el comprobante de `consultarComprobante`. Se exportan también `QR_URL` y el tipo `QROptions`.
20
+ - `evento` de ARCA: `onEvento(evento, method)` en la configuración (`ArcaMtxcaConfig` y `MtxcaClientConfig`) lo recibe de cualquier respuesta, incluidas las que devuelven un número o una lista; `solicitarCAEA`, `consultarCAEA` y `getCotizacionMoneda` lo incluyen como `evento?` en el resultado.
21
+
22
+ Documentación: Node >= 20.19 (solo ESM; desde CommonJS con `require()`), reglas de FCE y tabla de reglas validadas, redondeo, SOAP Fault `Client` (no incierto) vs `Server` (incierto) en emisiones, QR y eventos.
23
+ - `informarComprobanteCAEA` exige `fechaHoraGen` (regla 754: obligatoria para todo comprobante CAEA desde el 01/08/2026).
24
+
25
+ ### Patch Changes
26
+
27
+ - 1db70be: Descripción y keywords del paquete en npm corregidas (tildes).
28
+ - Updated dependencies [b152f08]
29
+ - @ramiidv/arca-common@0.7.0
30
+
3
31
  ## 0.5.0
4
32
 
5
33
  ### Minor Changes
package/README.md CHANGED
@@ -1,14 +1,21 @@
1
1
  # @ramiidv/arca-mtxca
2
2
 
3
+ [![npm](https://img.shields.io/npm/v/@ramiidv/arca-mtxca)](https://www.npmjs.com/package/@ramiidv/arca-mtxca)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
5
+ [![Node >= 20.19](https://img.shields.io/badge/node-%3E%3D20.19-brightgreen)](https://nodejs.org)
6
+
3
7
  SDK de TypeScript para el web service **WSMTXCA** de ARCA (ex AFIP): factura electrónica con detalle de ítems (código MTX/GTIN, cantidad, precio unitario e IVA por línea), con CAE y con CAEA.
4
8
 
5
9
  - Tipos fieles al WSDL/XSD de WSMTXCA y elementos en el orden de la secuencia (Axis2 valida el orden).
6
- - Redondeo según el XSD: 2 decimales en importes, 6 en cantidad, precio unitario, bonificación y cotización.
7
- - Validación local de las reglas excluyentes del manual (presencia de campos por unidad de medida, fórmulas por ítem, subtotales de IVA por alícuota, totales).
10
+ - Redondeo según el manual (Round Half Even): 2 decimales en importes, 6 en cantidad, precio unitario, bonificación y cotización.
11
+ - Validación local de las reglas excluyentes del manual (presencia de campos por unidad de medida, fórmulas por ítem, subtotales de IVA por alícuota, totales, FCE, condición de IVA del receptor).
12
+ - URL del código QR (RG 4892) con `urlQR()`.
8
13
  - Las emisiones nunca se reintentan y los errores con resultado desconocido se marcan como `uncertain`.
9
14
  - Los errores de negocio de ARCA (`arrayErrores`) se lanzan como `ArcaServiceError` en las consultas.
10
15
  - Autenticación WSAA automática (via `@ramiidv/arca-common`), con `ticketStorage` persistente opcional.
11
- - ESM, Node 18+, `fetch` nativo.
16
+ - Solo ESM, `fetch` nativo.
17
+
18
+ Fuente: [Manual del desarrollador WSMTXCA v0.25.8](https://www.afip.gob.ar/fe/ayuda/documentos/wsmtxca-RG-2904.pdf) y el WSDL de producción.
12
19
 
13
20
  ## Instalación
14
21
 
@@ -16,11 +23,17 @@ SDK de TypeScript para el web service **WSMTXCA** de ARCA (ex AFIP): factura ele
16
23
  npm install @ramiidv/arca-mtxca
17
24
  ```
18
25
 
26
+ ## Requisitos
27
+
28
+ - Node.js >= 20.19. Solo ESM; desde CommonJS se carga con `require()` (require(esm)).
29
+ - Certificado digital de ARCA asociado al servicio `wsmtxca` y empadronamiento en "Codificación de Productos – Factura con Detalle".
30
+
19
31
  ## Inicio rápido
20
32
 
21
33
  ```typescript
22
34
  import { readFileSync } from 'node:fs';
23
35
  import { ArcaMtxca, CbteTipo, Concepto, CodigoCondicionIVA, Moneda } from '@ramiidv/arca-mtxca';
36
+ import type { AutorizarRequest } from '@ramiidv/arca-mtxca';
24
37
 
25
38
  const mtxca = new ArcaMtxca({
26
39
  cert: readFileSync('./cert.pem', 'utf-8'),
@@ -30,14 +43,14 @@ const mtxca = new ArcaMtxca({
30
43
  });
31
44
 
32
45
  // Factura A: 1 producto a $100 + IVA 21%
33
- const res = await mtxca.autorizar({
46
+ const comprobante: AutorizarRequest = {
34
47
  codigoTipoComprobante: CbteTipo.FACTURA_A,
35
48
  numeroPuntoVenta: 4000,
36
49
  // numeroComprobante: omitido => último autorizado + 1
37
50
  fechaEmision: new Date(),
38
51
  codigoTipoDocumento: 80,
39
52
  numeroDocumento: '30-00000000-7',
40
- condicionIVAReceptor: 1, // RG 5616: ver getCondicionesIVAReceptor()
53
+ condicionIVAReceptor: 1, // RG 5616 (obligatoria): ver getCondicionesIVAReceptor()
41
54
  importeGravado: 100,
42
55
  importeNoGravado: 0,
43
56
  importeExento: 0,
@@ -61,7 +74,8 @@ const res = await mtxca.autorizar({
61
74
  },
62
75
  ],
63
76
  subtotalesIVA: [{ codigo: CodigoCondicionIVA.IVA_21, importe: 21 }],
64
- });
77
+ };
78
+ const res = await mtxca.autorizar(comprobante);
65
79
 
66
80
  if (res.resultado === 'R') {
67
81
  console.error('Rechazado', res.errores);
@@ -69,6 +83,7 @@ if (res.resultado === 'R') {
69
83
  // 'A' aprobado, 'O' aprobado con observaciones
70
84
  console.log(res.comprobante.numeroComprobante, res.comprobante.cae, res.comprobante.fechaVencimientoCAE);
71
85
  if (res.observaciones.length) console.warn(res.observaciones);
86
+ console.log(mtxca.urlQR(comprobante, res)); // URL del QR (RG 4892)
72
87
  }
73
88
  ```
74
89
 
@@ -89,85 +104,10 @@ if (res.resultado === 'R') {
89
104
  | `tokenTTLMinutes`, `clockOffsetMs`, `autoClockSkew`, `loginErrorCooldownMs` | Opciones de WSAA. |
90
105
  | `fetch`, `legacyTls` | `fetch` propio (proxy, tests) y transporte TLS legacy. |
91
106
  | `onEvent` | Callback de eventos (`auth:*`, `request:*`). |
92
-
93
- Endpoints (manual WSMTXCA):
94
-
95
- | Entorno | URL |
96
- | ------------ | ----------------------------------------------------------------- |
97
- | Homologación | `https://fwshomo.afip.gov.ar/wsmtxca/services/MTXCAService` |
98
- | Producción | `https://serviciosjava.afip.gob.ar/wsmtxca/services/MTXCAService` |
107
+ | `onEvento` | Recibe el `evento` (aviso de ARCA) de cualquier respuesta: `(evento, method) => void`. |
99
108
 
100
109
  Todos los métodos aceptan un último parámetro `opts?: CallOptions` con `signal` para cancelar.
101
110
 
102
- ## Reglas de importes
103
-
104
- Los campos del request se llaman igual que en el XSD (`ComprobanteType`, `ItemType`). Lo más importante del manual:
105
-
106
- - `importeItem` incluye el IVA. En clase A (1, 2, 3, 51, 52, 53) `precioUnitario` va **sin** IVA y el ítem lleva `importeIVA`; en clase B (6, 7, 8) `precioUnitario` va **con** IVA y el ítem no lleva `importeIVA`.
107
- - `importeItem` = (`precioUnitario` × `cantidad` − `importeBonificacion`) × (1 + alícuota) en clase A; = `precioUnitario` × `cantidad` − `importeBonificacion` en clase B.
108
- - Unidad 99 (bonificación) y 97 (seña): sin `cantidad`, `precioUnitario` ni `importeBonificacion`; la bonificación tiene `importeItem` negativo y requiere otro ítem con la misma condición de IVA. En clase A, `importeIVA` = `importeItem` − `importeItem` / (1 + alícuota).
109
- - Fuera de 97/99, `unidadesMtx` y `codigoMtx` son obligatorios.
110
- - `importeGravado` = Σ (`importeItem` − IVA) de los ítems con condición 3–6; `importeNoGravado` = Σ ítems condición 1; `importeExento` = Σ ítems condición 2; `importeSubtotal` = gravado + no gravado + exento.
111
- - `subtotalesIVA`: uno por cada condición 4, 5 o 6 presente, con la suma del IVA de esos ítems.
112
- - `importeTotal` = `importeSubtotal` + `importeOtrosTributos` + Σ subtotales de IVA = `importeOtrosTributos` + Σ `importeItem`.
113
- - Margen de error del manual: error relativo ≤ 0,01% o absoluto ≤ 0,01 × cantidad de elementos.
114
-
115
- `autorizar()` valida todo esto antes de enviar y lanza `ArcaValidationError` con el detalle (incluye el código de error de ARCA que se evita y el valor esperado). Si ARCA acepta un caso que la validación local rechaza, pasá `{ validarImportes: false }`. Para redondear como el SDK: `roundImporte()` y `roundDecimal()`.
116
-
117
- Ejemplo de bonificación en clase A:
118
-
119
- ```typescript
120
- items: [
121
- { unidadesMtx: 1, codigoMtx: '7790001000012', descripcion: 'Producto', cantidad: 1, codigoUnidadMedida: 7,
122
- precioUnitario: 100, codigoCondicionIVA: 5, importeIVA: 21, importeItem: 121 },
123
- { descripcion: 'Bonificación 10%', codigoUnidadMedida: 99, codigoCondicionIVA: 5, importeIVA: -2.1, importeItem: -12.1 },
124
- ],
125
- importeGravado: 90, importeSubtotal: 90, importeTotal: 108.9,
126
- subtotalesIVA: [{ codigo: 5, importe: 18.9 }],
127
- ```
128
-
129
- ## Resultado de una autorización y manejo de errores
130
-
131
- | Situación | Qué pasa |
132
- | ------------------------------ | -------------------------------------------------------------------- |
133
- | Datos inválidos localmente | `ArcaValidationError` (no se hace ningún request). |
134
- | ARCA aprueba | `{ resultado: 'A', comprobante: { cae, fechaVencimientoCAE, ... } }` |
135
- | ARCA aprueba con observaciones | `{ resultado: 'O', comprobante, observaciones }` |
136
- | ARCA rechaza | `{ resultado: 'R', errores }` — **no lanza**; revisá `resultado`. |
137
- | Consulta con `arrayErrores` | `ArcaServiceError` con `errors[]` (`code`, `msg`). |
138
- | Fault SOAP, HTTP, red, timeout | `ArcaSoapError` (`uncertain`, `faultString`, `statusCode`). |
139
- | Login WSAA | `ArcaAuthError` / `ArcaTicketVigenteError`. |
140
-
141
- `ultimoComprobante()` devuelve 0 solo ante el error 1502 de ARCA ("no hay comprobantes para ese punto de venta y tipo"); cualquier otro error lanza.
142
-
143
- ### Emisiones con resultado incierto
144
-
145
- `autorizar`, `autorizarAjusteIVA`, `solicitarCAEA`, `informarComprobanteCAEA`, `informarAjusteIVACAEA`, `informarCAEANoUtilizado` e `informarCAEANoUtilizadoPtoVta` se envían una sola vez (nunca se reintentan). Si fallan con `ArcaSoapError` y `uncertain === true` (timeout, conexión cortada, HTTP 5xx, respuesta ilegible), ARCA pudo haber procesado el request. **No reintentes a ciegas**: si el comprobante ya fue autorizado, un reenvío con el mismo número es rechazado por correlatividad (102) y uno con el número siguiente duplica la factura.
146
-
147
- ```typescript
148
- import { ArcaSoapError } from '@ramiidv/arca-mtxca';
149
-
150
- const numero = (await mtxca.ultimoComprobante(4000, CbteTipo.FACTURA_A)) + 1;
151
- try {
152
- return await mtxca.autorizar({ ...comprobante, numeroComprobante: numero });
153
- } catch (e) {
154
- if (e instanceof ArcaSoapError && e.uncertain) {
155
- // ¿Llegó a autorizarse?
156
- const ultimo = await mtxca.ultimoComprobante(4000, CbteTipo.FACTURA_A);
157
- if (ultimo >= numero) {
158
- const { comprobante } = await mtxca.consultarComprobante(CbteTipo.FACTURA_A, 4000, numero);
159
- return comprobante; // codigoAutorizacion = CAE
160
- }
161
- // No se autorizó: se puede reenviar con el mismo número.
162
- }
163
- throw e;
164
- }
165
- ```
166
-
167
- Para CAEA: `solicitarCAEA` incierto → `consultarCAEAEntreFechas()`; `informarComprobanteCAEA` incierto → `consultarComprobante()`.
168
-
169
- Las solicitudes de un mismo punto de venta y tipo deben ser secuenciales (ARCA rechaza con 135 una solicitud concurrente), y la numeración automática supone un único emisor por punto de venta.
170
-
171
111
  ## API
172
112
 
173
113
  ### Comprobantes con CAE
@@ -179,6 +119,18 @@ Las solicitudes de un mismo punto de venta y tipo deben ser secuenciales (ARCA r
179
119
  | `ultimoComprobante(ptoVta, cbteTipo, opts?)` | `consultarUltimoComprobanteAutorizado` |
180
120
  | `siguienteComprobante(ptoVta, cbteTipo, opts?)` | último + 1 |
181
121
  | `consultarComprobante(cbteTipo, ptoVta, cbteNro, opts?)` | `consultarComprobante` → `{ comprobante, observaciones, evento? }` |
122
+ | `urlQR(comprobante, resultado?, options?)` | URL del código QR (RG 4892), sin request |
123
+
124
+ ### Código QR (RG 4892)
125
+
126
+ `urlQR` arma la URL con `generarUrlQR` de `@ramiidv/arca-common` y la CUIT de la instancia. Toma tipo, punto de venta, número y CAE/CAEA de `resultado` (con CAE, también la fecha que asignó ARCA) y del comprobante `importeTotal`, `codigoMoneda`, `cotizacionMoneda` (1 si es `PES`), `codigoTipoDocumento` y `numeroDocumento`. Sin `resultado`, recibe el comprobante de `consultarComprobante()` (`codigoTipoAutorizacion` "E" = CAE, "A" = CAEA). También está como función: `urlQR(cuit, comprobante, resultado?, options?)`.
127
+
128
+ ```typescript
129
+ const { comprobante } = await mtxca.consultarComprobante(CbteTipo.FACTURA_A, 4000, 25);
130
+ const url = mtxca.urlQR(comprobante); // https://www.arca.gob.ar/fe/qr/?p=...
131
+ ```
132
+
133
+ Lanza `ArcaValidationError` si el comprobante fue rechazado o falta un dato (ej. la cotización de una moneda extranjera omitida por `cancelaEnMismaMonedaExtranjera`: en ese caso, usá el comprobante de `consultarComprobante()`).
182
134
 
183
135
  ### CAEA
184
136
 
@@ -211,7 +163,7 @@ Las solicitudes de un mismo punto de venta y tipo deben ser secuenciales (ARCA r
211
163
  | `getActividadesVigentes()` | `consultarActividadesVigentes` | `{ codigo, orden, descripcion }[]` |
212
164
  | `getPuntosVenta()` / `getPuntosVentaCAE()` / `getPuntosVentaCAEA()` | `consultarPuntosVenta*` | `{ numeroPuntoVenta, bloqueado, fechaBaja? }[]` |
213
165
 
214
- `getCotizacionMoneda` usa la fecha de hoy si no se indica; `cotizacion` es `null` cuando ARCA no tiene cotización (responde sin valor y sin error).
166
+ `getCotizacionMoneda` usa la fecha de hoy si no se indica; `cotizacion` es `null` cuando ARCA no tiene cotización (responde sin valor y sin error). `getCotizacionMoneda`, `solicitarCAEA` y `consultarCAEA` incluyen `evento?` en el resultado; para el resto, usá `onEvento` (ver [Eventos](#eventos)).
215
167
 
216
168
  `clearAuthCache()` (async) descarta el ticket WSAA de `wsmtxca`.
217
169
 
@@ -225,7 +177,52 @@ const client = new MtxcaClient({ endpoint: MTXCA_ENDPOINTS.testing });
225
177
  await client.dummy();
226
178
  ```
227
179
 
228
- ## Enums y constantes
180
+ ### Reglas de importes
181
+
182
+ Los campos del request se llaman igual que en el XSD (`ComprobanteType`, `ItemType`). Lo más importante del manual:
183
+
184
+ - `importeItem` incluye el IVA. En clase A (1, 2, 3, 51, 52, 53) `precioUnitario` va **sin** IVA y el ítem lleva `importeIVA`; en clase B (6, 7, 8) `precioUnitario` va **con** IVA y el ítem no lleva `importeIVA`.
185
+ - `importeItem` = (`precioUnitario` × `cantidad` − `importeBonificacion`) × (1 + alícuota) en clase A; = `precioUnitario` × `cantidad` − `importeBonificacion` en clase B.
186
+ - Unidad 99 (bonificación) y 97 (seña): sin `cantidad`, `precioUnitario` ni `importeBonificacion`; la bonificación tiene `importeItem` negativo y requiere otro ítem con la misma condición de IVA. En clase A, `importeIVA` = `importeItem` − `importeItem` / (1 + alícuota).
187
+ - Fuera de 97/99, `unidadesMtx` y `codigoMtx` son obligatorios.
188
+ - `importeGravado` = Σ (`importeItem` − IVA) de los ítems con condición 3–6; `importeNoGravado` = Σ ítems condición 1; `importeExento` = Σ ítems condición 2; `importeSubtotal` = gravado + no gravado + exento.
189
+ - `subtotalesIVA`: uno por cada condición 4, 5 o 6 presente, con la suma del IVA de esos ítems.
190
+ - `importeTotal` = `importeSubtotal` + `importeOtrosTributos` + Σ subtotales de IVA = `importeOtrosTributos` + Σ `importeItem`.
191
+ - En una bonificación (99) de clase A, el IVA (en valor absoluto) no puede superar el IVA de los demás ítems de la misma condición (516).
192
+ - Margen de error del manual: error relativo ≤ 0,01% o absoluto ≤ 0,01 × cantidad de elementos.
193
+ - Redondeo: **Round Half Even** (mitad al par, nota 4 de "Aclaraciones y Definiciones" del manual) en todos los valores decimales: `8.565` → `8.56`, `8.575` → `8.58`, `1.005` → `1.00`. El SDK redondea así lo que envía y lo que valida; para calcular igual, usá `roundImporte()` (2 decimales) y `roundDecimal()` (6).
194
+
195
+ `autorizar()` valida todo esto antes de enviar y lanza `ArcaValidationError` con el detalle (incluye el código de error de ARCA que se evita y el valor esperado). Si ARCA acepta un caso que la validación local rechaza, pasá `{ validarImportes: false }`.
196
+
197
+ ### Otras reglas del manual que se validan localmente
198
+
199
+ | Regla | CAE (`autorizar`) | CAEA (`informarComprobanteCAEA`) |
200
+ | -------------------------------------------------------------------------------------------------------------- | ----------------- | -------------------------------- |
201
+ | `condicionIVAReceptor` (RG 5616) obligatoria. ARCA hoy la **observa**; el SDK la exige para no emitir sin ella | 190 | 390 |
202
+ | `fechaServicioDesde`/`Hasta` y `fechaVencimientoPago` solo con concepto 2 o 3 (fuera de FCE) | 122-124 | — (ARCA solo observa) |
203
+ | FCE 201 y 206: `fechaVencimientoPago` obligatoria, cualquiera sea el concepto | 148 | 764 |
204
+ | FCE 202, 203, 207 y 208: `fechaVencimientoPago` no corresponde, cualquiera sea el concepto | 149 | 765 |
205
+ | FCE: cada `otrosTributos[].descripcion` es obligatoria (en el resto, solo con `codigo` 99, regla 301) | 302 | — |
206
+ | ND/NC 2, 3, 7, 8, 52, 53: `comprobantesAsociados` o `periodoComprobantesAsociados`, no ambos | 160, 161 | 778, 779 |
207
+ | `cancelaEnMismaMonedaExtranjera: 'S'` solo en 1, 6, 51, 201 y 206 | 118 | — (ARCA solo observa) |
208
+ | `compradores` solo con concepto 1; en FCE, uno solo | 432, 433 | no se admiten (753) |
209
+ | `fechaHoraGen` obligatoria en todo comprobante CAEA (desde el 01/08/2026) | — | 754 |
210
+
211
+ En FCE (201-208) el ítem no exige `importeIVA` ni se valida su fórmula (514/515 aplican a 1, 2, 3, 51, 52, 53); el precio va sin IVA en FCE A y con IVA en FCE B, y los totales (110-116) se validan igual que en A y B.
212
+
213
+ Ejemplo de bonificación en clase A:
214
+
215
+ ```typescript
216
+ items: [
217
+ { unidadesMtx: 1, codigoMtx: '7790001000012', descripcion: 'Producto', cantidad: 1, codigoUnidadMedida: 7,
218
+ precioUnitario: 100, codigoCondicionIVA: 5, importeIVA: 21, importeItem: 121 },
219
+ { descripcion: 'Bonificación 10%', codigoUnidadMedida: 99, codigoCondicionIVA: 5, importeIVA: -2.1, importeItem: -12.1 },
220
+ ],
221
+ importeGravado: 90, importeSubtotal: 90, importeTotal: 108.9,
222
+ subtotalesIVA: [{ codigo: 5, importe: 18.9 }],
223
+ ```
224
+
225
+ ### Enums y constantes
229
226
 
230
227
  - `CbteTipo`: 1, 2, 3, 6, 7, 8, 51, 52, 53 (A con leyenda "OPERACIÓN SUJETA A RETENCIÓN") y FCE 201–203, 206–208.
231
228
  - `Concepto`: 1 productos, 2 servicios, 3 ambos.
@@ -233,10 +230,69 @@ await client.dummy();
233
230
  - `UnidadMedidaEspecial`: 95, 97 (seña), 99 (bonificación).
234
231
  - `Moneda`: `PES`, `DOL`, `060` (euro). Lista completa: `getMonedas()`.
235
232
 
236
- ## Requisitos
233
+ ## Manejo de errores
237
234
 
238
- - Node.js >= 18.
239
- - Certificado digital de ARCA asociado al servicio `wsmtxca` y empadronamiento en "Codificación de Productos – Factura con Detalle".
235
+ | Situación | Qué pasa |
236
+ | ------------------------------ | -------------------------------------------------------------------- |
237
+ | Datos inválidos localmente | `ArcaValidationError` (no se hace ningún request). |
238
+ | ARCA aprueba | `{ resultado: 'A', comprobante: { cae, fechaVencimientoCAE, ... } }` |
239
+ | ARCA aprueba con observaciones | `{ resultado: 'O', comprobante, observaciones }` |
240
+ | ARCA rechaza | `{ resultado: 'R', errores }` — **no lanza**; revisá `resultado`. |
241
+ | Consulta con `arrayErrores` | `ArcaServiceError` con `errors[]` (`code`, `msg`). |
242
+ | Fault SOAP, HTTP, red, timeout | `ArcaSoapError` (`uncertain`, `faultString`, `statusCode`). |
243
+ | Respuesta con forma inesperada | `ArcaSoapError` (`uncertain: true` en emisiones). |
244
+ | Login WSAA | `ArcaAuthError` / `ArcaTicketVigenteError`. |
245
+
246
+ `ultimoComprobante()` devuelve 0 solo ante el error 1502 de ARCA ("no hay comprobantes para ese punto de venta y tipo"); cualquier otro error lanza.
247
+
248
+ ### Emisiones con resultado incierto
249
+
250
+ `autorizar`, `autorizarAjusteIVA`, `solicitarCAEA`, `informarComprobanteCAEA`, `informarAjusteIVACAEA`, `informarCAEANoUtilizado` e `informarCAEANoUtilizadoPtoVta` se envían una sola vez (nunca se reintentan). Si fallan con `ArcaSoapError` y `uncertain === true` (timeout, conexión cortada, HTTP 5xx, SOAP Fault `Server`, respuesta ilegible), ARCA pudo haber procesado el request. Los Fault `Client` (ej. "Token vencido", errores de estructura) no son inciertos: el request se rechazó antes de procesarse. **No reintentes a ciegas**: si el comprobante ya fue autorizado, un reenvío con el mismo número es rechazado por correlatividad (102) y uno con el número siguiente duplica la factura.
251
+
252
+ ```typescript
253
+ import { type ArcaMtxca, type AutorizarRequest, ArcaSoapError, CbteTipo } from '@ramiidv/arca-mtxca';
254
+
255
+ async function autorizarSeguro(mtxca: ArcaMtxca, comprobante: AutorizarRequest) {
256
+ const numero = (await mtxca.ultimoComprobante(4000, CbteTipo.FACTURA_A)) + 1;
257
+ try {
258
+ return await mtxca.autorizar({ ...comprobante, numeroComprobante: numero });
259
+ } catch (e) {
260
+ if (e instanceof ArcaSoapError && e.uncertain) {
261
+ // ¿Llegó a autorizarse?
262
+ const ultimo = await mtxca.ultimoComprobante(4000, CbteTipo.FACTURA_A);
263
+ if (ultimo >= numero) {
264
+ const { comprobante } = await mtxca.consultarComprobante(CbteTipo.FACTURA_A, 4000, numero);
265
+ return comprobante; // codigoAutorizacion = CAE
266
+ }
267
+ // No se autorizó: se puede reenviar con el mismo número.
268
+ }
269
+ throw e;
270
+ }
271
+ }
272
+ ```
273
+
274
+ Para CAEA: `solicitarCAEA` incierto → `consultarCAEAEntreFechas()`; `informarComprobanteCAEA` incierto → `consultarComprobante()`.
275
+
276
+ Las solicitudes de un mismo punto de venta y tipo deben ser secuenciales (ARCA rechaza con 135 una solicitud concurrente), y la numeración automática supone un único emisor por punto de venta.
277
+
278
+ ## Eventos
279
+
280
+ `onEvent` (o `mtxca.on(tipo, handler)`) recibe `auth:login`, `auth:cache-hit`, `auth:clock-skew`, `auth:storage-error`, `request:start`, `request:end`, `request:retry` y `request:error` (ver `ArcaEvent` en `@ramiidv/arca-common`).
281
+
282
+ El `evento` de WSMTXCA (aviso informativo de ARCA, `{ codigo, descripcion }`, ej. mantenimiento programado) llega como `evento?` en los resultados de autorizaciones, informes de CAEA, `consultarComprobante`, `solicitarCAEA`, `consultarCAEA` y `getCotizacionMoneda`, y de **cualquier** respuesta (incluidas las que devuelven un número o una lista) a `onEvento(evento, method)` de la configuración.
283
+
284
+ ## Entornos
285
+
286
+ | Entorno | URL |
287
+ | ------------ | ----------------------------------------------------------------- |
288
+ | Homologación | `https://fwshomo.afip.gov.ar/wsmtxca/services/MTXCAService` |
289
+ | Producción | `https://serviciosjava.afip.gob.ar/wsmtxca/services/MTXCAService` |
290
+
291
+ `production: false` (default) usa homologación. Las URLs están en `MTXCA_ENDPOINTS`; las de WSAA, en `WSAA_ENDPOINTS` de `@ramiidv/arca-common`.
292
+
293
+ ## Ejemplos
294
+
295
+ En [examples](https://github.com/ramiidv/arca-sdks/tree/main/packages/mtxca/examples): factura B con ítems y QR, consultas de parámetros y CAEA, y manejo de errores.
240
296
 
241
297
  ## Licencia
242
298
 
@@ -1,6 +1,7 @@
1
1
  import { ArcaSdkBase } from '@ramiidv/arca-common';
2
- import type { CallOptions, ServerStatus } from '@ramiidv/arca-common';
2
+ import type { CallOptions, QROptions, ServerStatus } from '@ramiidv/arca-common';
3
3
  import { MtxcaClient } from './mtxca-client.js';
4
+ import type { ComprobanteQR } from './qr.js';
4
5
  import type { ActividadVigente, ArcaMtxcaConfig, AutorizarOptions, AutorizarRequest, CodigoDescripcion, CodigoDescripcionString, CotizacionResult, FechaInput, MtxcaAutorizarResult, MtxcaCAEA, MtxcaCAEANoUtilizadoResult, MtxcaComprobanteCAEA, MtxcaConsultaComprobanteResult, MtxcaInformarCAEAResult, PuntoVenta } from './types.js';
5
6
  /**
6
7
  * Cliente de alto nivel de WSMTXCA (factura electrónica con detalle de
@@ -52,6 +53,19 @@ export declare class ArcaMtxca extends ArcaSdkBase<'mtxca'> {
52
53
  siguienteComprobante(ptoVta: number, cbteTipo: number, opts?: CallOptions): Promise<number>;
53
54
  /** Consulta un comprobante autorizado (CAE) o informado (CAEA). Lanza `ArcaServiceError` si no existe. */
54
55
  consultarComprobante(cbteTipo: number, ptoVta: number, cbteNro: number, opts?: CallOptions): Promise<MtxcaConsultaComprobanteResult>;
56
+ /**
57
+ * URL del código QR (RG 4892) de un comprobante autorizado con CAE o
58
+ * informado con CAEA, con la CUIT de la instancia como emisor.
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * const res = await mtxca.autorizar(req);
63
+ * if (res.resultado !== 'R') console.log(mtxca.urlQR(req, res));
64
+ * // Más tarde: mtxca.urlQR((await mtxca.consultarComprobante(1, 4000, 25)).comprobante)
65
+ * ```
66
+ * @throws ArcaValidationError si el comprobante fue rechazado o falta algún dato (ver `urlQR`).
67
+ */
68
+ urlQR(comprobante: ComprobanteQR, resultado?: MtxcaAutorizarResult | MtxcaInformarCAEAResult, options?: QROptions): string;
55
69
  /**
56
70
  * Solicita un CAEA para `periodo` (AAAAMM) y `orden` (1: días 1-15, 2: 16
57
71
  * a fin de mes). Lanza `ArcaServiceError` si ARCA lo rechaza. Si lanza
@@ -64,7 +78,8 @@ export declare class ArcaMtxca extends ArcaSdkBase<'mtxca'> {
64
78
  consultarCAEAEntreFechas(fechaDesde: FechaInput, fechaHasta: FechaInput, opts?: CallOptions): Promise<MtxcaCAEA[]>;
65
79
  /**
66
80
  * Informa un comprobante emitido con CAEA (`informarComprobanteCAEA`). Valida
67
- * el XSD y las reglas excluyentes de ítems. Un rechazo devuelve
81
+ * el XSD y las reglas excluyentes del manual (ítems, condición de IVA del
82
+ * receptor, FCE, comprobantes asociados, compradores). Un rechazo devuelve
68
83
  * `resultado: 'R'`. Ante `uncertain`, verificá con `consultarComprobante()`.
69
84
  */
70
85
  informarComprobanteCAEA(comprobante: MtxcaComprobanteCAEA, opts?: CallOptions): Promise<MtxcaInformarCAEAResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"arca-mtxca.d.ts","sourceRoot":"","sources":["../src/arca-mtxca.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arca-mtxca.d.ts","sourceRoot":"","sources":["../src/arca-mtxca.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { ArcaSdkBase, ArcaServiceError, formatDate } from '@ramiidv/arca-common';
2
2
  import { MTXCA_ENDPOINTS, MTXCA_SERVICE_ID } from './constants.js';
3
3
  import { MtxcaClient } from './mtxca-client.js';
4
+ import { urlQR } from './qr.js';
4
5
  import { buildComprobante } from './serialize.js';
5
6
  import { reglasComprobanteCAE, reglasComprobanteCAEA } from './validation.js';
6
7
  /** Error 1502 de consultarUltimoComprobanteAutorizado: no hay comprobantes para ese punto de venta y tipo. */
@@ -26,6 +27,7 @@ export class ArcaMtxca extends ArcaSdkBase {
26
27
  this.client = new MtxcaClient({
27
28
  endpoint: this.endpoint(MTXCA_ENDPOINTS, config.endpoints?.mtxca),
28
29
  ...this.transport,
30
+ onEvento: config.onEvento,
29
31
  });
30
32
  }
31
33
  async auth(opts) {
@@ -97,6 +99,21 @@ export class ArcaMtxca extends ArcaSdkBase {
97
99
  const auth = await this.auth(opts);
98
100
  return this.client.consultarComprobante(auth, cbteTipo, ptoVta, cbteNro, this.callOptions(opts));
99
101
  }
102
+ /**
103
+ * URL del código QR (RG 4892) de un comprobante autorizado con CAE o
104
+ * informado con CAEA, con la CUIT de la instancia como emisor.
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * const res = await mtxca.autorizar(req);
109
+ * if (res.resultado !== 'R') console.log(mtxca.urlQR(req, res));
110
+ * // Más tarde: mtxca.urlQR((await mtxca.consultarComprobante(1, 4000, 25)).comprobante)
111
+ * ```
112
+ * @throws ArcaValidationError si el comprobante fue rechazado o falta algún dato (ver `urlQR`).
113
+ */
114
+ urlQR(comprobante, resultado, options) {
115
+ return urlQR(this.cuit, comprobante, resultado, options);
116
+ }
100
117
  // =========================================================================
101
118
  // CAEA
102
119
  // =========================================================================
@@ -121,7 +138,8 @@ export class ArcaMtxca extends ArcaSdkBase {
121
138
  }
122
139
  /**
123
140
  * Informa un comprobante emitido con CAEA (`informarComprobanteCAEA`). Valida
124
- * el XSD y las reglas excluyentes de ítems. Un rechazo devuelve
141
+ * el XSD y las reglas excluyentes del manual (ítems, condición de IVA del
142
+ * receptor, FCE, comprobantes asociados, compradores). Un rechazo devuelve
125
143
  * `resultado: 'R'`. Ante `uncertain`, verificá con `consultarComprobante()`.
126
144
  */
127
145
  async informarComprobanteCAEA(comprobante, opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"arca-mtxca.js","sourceRoot":"","sources":["../src/arca-mtxca.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAoB9E,8GAA8G;AAC9G,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,SAAU,SAAQ,WAAoB;IACjD,mDAAmD;IACnC,MAAM,CAAc;IAEpC,0DAA0D;IAC1D,YAAY,MAAuB;QACjC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;YACjE,GAAG,IAAI,CAAC,SAAS;SAClB,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,IAAkB;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACjF,CAAC;IAED,4EAA4E;IAC5E,MAAM;IACN,4EAA4E;IAE5E;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,SAAS,CAAC,OAAyB,EAAE,IAAuB;QAChE,OAAO,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,OAAyB,EAAE,IAAkB;QACpE,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/F,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,MAAqD,EACrD,OAAyB,EACzB,IAAuB;QAEvB,2EAA2E;QAC3E,gBAAgB,CACd,EAAE,GAAG,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,IAAI,CAAC,EAAE,EAClE,KAAK,EACL,IAAI,EAAE,eAAe,KAAK,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CACnE,CAAC;QAEF,MAAM,iBAAiB,GACrB,OAAO,CAAC,iBAAiB;YACzB,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;QACnG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,EAAE,iBAAiB,EAAE,CAAC;QACtD,OAAO,MAAM,KAAK,sBAAsB;YACtC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7E,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,QAAgB,EAAE,IAAkB;QAC1E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,oCAAoC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAChH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,gBAAgB,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,EAAE,CAAC;gBAC/G,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,QAAgB,EAAE,IAAkB;QAC7E,OAAO,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,0GAA0G;IAC1G,KAAK,CAAC,oBAAoB,CACxB,QAAgB,EAChB,MAAc,EACd,OAAe,EACf,IAAkB;QAElB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACnG,CAAC;IAED,4EAA4E;IAC5E,OAAO;IACP,4EAA4E;IAE5E;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,KAAa,EAAE,IAAkB;QACpE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,IAAkB;QAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,wBAAwB,CAC5B,UAAsB,EACtB,UAAsB,EACtB,IAAkB;QAElB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACpG,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,uBAAuB,CAC3B,WAAiC,EACjC,IAAkB;QAElB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,+FAA+F;IAC/F,KAAK,CAAC,qBAAqB,CAAC,WAAiC,EAAE,IAAkB;QAC/E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,uBAAuB,CAAC,IAAY,EAAE,IAAkB;QAC5D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,oGAAoG;IACpG,KAAK,CAAC,6BAA6B,CACjC,IAAY,EACZ,MAAc,EACd,IAAkB;QAElB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,gCAAgC,CAAC,IAAY,EAAE,IAAkB;QACrE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,4EAA4E;IAC5E,SAAS;IACT,4EAA4E;IAE5E,gEAAgE;IAChE,KAAK,CAAC,MAAM,CAAC,IAAkB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E,KAAK,CAAC,mBAAmB,CAAC,IAAkB;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAkB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAkB;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,iBAAiB,CAAC,IAAkB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,uFAAuF;IACvF,KAAK,CAAC,yBAAyB,CAAC,QAAgB,EAAE,IAAkB;QAClE,OAAO,IAAI,CAAC,MAAM,CAAC,+BAA+B,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9G,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAkB;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACrF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB,CACvB,YAAoB,EACpB,KAAK,GAAe,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,EAC1C,IAAkB;QAElB,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACnH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAkB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAkB;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,IAAkB;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACnG,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,IAAkB;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAkB;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAkB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAkB;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7F,CAAC;CACF"}
1
+ {"version":3,"file":"arca-mtxca.js","sourceRoot":"","sources":["../src/arca-mtxca.ts"],"names":[],"mappings":"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"}
package/dist/format.d.ts CHANGED
@@ -1,10 +1,5 @@
1
- /**
2
- * Redondea a `decimals` decimales (mitad hacia afuera del cero), sin los
3
- * errores de `toFixed` con binarios (ej. `1.005` → `1.01`).
4
- */
5
- export declare function roundTo(value: number, decimals: number): number;
6
- /** Redondea un importe a 2 decimales (`ImporteSubtotalSimpleType` / `ImporteTotalSimpleType`). */
1
+ /** Redondea un importe a 2 decimales, mitad al par (`8.565` → `8.56`, `8.575` → `8.58`). */
7
2
  export declare function roundImporte(value: number): number;
8
- /** Redondea cantidad, precio unitario o bonificación a 6 decimales (`DecimalSimpleType`). */
3
+ /** Redondea cantidad, precio unitario, bonificación o cotización a 6 decimales, mitad al par. */
9
4
  export declare function roundDecimal(value: number): number;
10
5
  //# sourceMappingURL=format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAED,kGAAkG;AAClG,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAKA,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD"}
package/dist/format.js CHANGED
@@ -1,22 +1,12 @@
1
- /**
2
- * Redondea a `decimals` decimales (mitad hacia afuera del cero), sin los
3
- * errores de `toFixed` con binarios (ej. `1.005` → `1.01`).
4
- */
5
- export function roundTo(value, decimals) {
6
- const abs = Math.abs(value);
7
- const text = String(abs);
8
- const rounded = text.includes('e')
9
- ? Math.round(abs * 10 ** decimals) / 10 ** decimals
10
- : Number(`${Math.round(Number(`${text}e${decimals}`))}e-${decimals}`);
11
- const result = value < 0 ? -rounded : rounded;
12
- return result === 0 ? 0 : result; // sin -0
13
- }
14
- /** Redondea un importe a 2 decimales (`ImporteSubtotalSimpleType` / `ImporteTotalSimpleType`). */
1
+ import { roundHalfEven } from '@ramiidv/arca-common';
2
+ // El manual de WSMTXCA ("Aclaraciones y Definiciones", nota 4) indica Round
3
+ // Half Even para todos los valores decimales.
4
+ /** Redondea un importe a 2 decimales, mitad al par (`8.565` → `8.56`, `8.575` → `8.58`). */
15
5
  export function roundImporte(value) {
16
- return roundTo(value, 2);
6
+ return roundHalfEven(value, 2);
17
7
  }
18
- /** Redondea cantidad, precio unitario o bonificación a 6 decimales (`DecimalSimpleType`). */
8
+ /** Redondea cantidad, precio unitario, bonificación o cotización a 6 decimales, mitad al par. */
19
9
  export function roundDecimal(value) {
20
- return roundTo(value, 6);
10
+ return roundHalfEven(value, 6);
21
11
  }
22
12
  //# sourceMappingURL=format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,QAAgB;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAChC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,QAAQ;QACnD,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS;AAC7C,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,4EAA4E;AAC5E,8CAA8C;AAE9C,4FAA4F;AAC5F,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACjC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,10 @@ export { WsaaClient, MemoryTicketStorage, FileTicketStorage } from '@ramiidv/arc
7
7
  export type { WsaaClientConfig } from '@ramiidv/arca-common';
8
8
  export type { ArcaMtxcaConfig, MtxcaAuth, FechaInput, MtxcaItem, MtxcaSubtotalIVA, MtxcaOtroTributo, MtxcaComprobanteAsociado, MtxcaPeriodo, MtxcaDatoAdicional, MtxcaComprador, MtxcaComprobanteBase, MtxcaComprobanteCAE, MtxcaComprobanteCAEA, AutorizarRequest, AutorizarOptions, CodigoDescripcion, CodigoDescripcionString, MtxcaResultado, MtxcaComprobanteCAEResponse, MtxcaAutorizarResult, MtxcaComprobanteCAEAResponse, MtxcaInformarCAEAResult, MtxcaCAEA, MtxcaCAEANoUtilizadoResult, MtxcaItemConsultado, MtxcaComprobanteConsultado, MtxcaConsultaComprobanteResult, PuntoVenta, ActividadVigente, CotizacionResult, AccessTicket, ArcaEvent, CallOptions, LegacyTlsMode, ServerStatus, TicketStorage, } from './types.js';
9
9
  export { MTXCA_ENDPOINTS, MTXCA_NAMESPACE, MTXCA_SERVICE_ID, ALICUOTAS_IVA, CbteTipo, Concepto, CodigoCondicionIVA, UnidadMedidaEspecial, Moneda, } from './constants.js';
10
+ export { urlQR } from './qr.js';
11
+ export type { ComprobanteQR } from './qr.js';
12
+ export { QR_URL } from '@ramiidv/arca-common';
13
+ export type { QROptions } from '@ramiidv/arca-common';
10
14
  export { validateComprobanteCAE, validateComprobanteCAEA } from './validation.js';
11
15
  export { roundImporte, roundDecimal } from './format.js';
12
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,YAAY,EACV,eAAe,EACf,SAAS,EACT,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,EACd,2BAA2B,EAC3B,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,SAAS,EACT,0BAA0B,EAC1B,mBAAmB,EACnB,0BAA0B,EAC1B,8BAA8B,EAC9B,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,GACP,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,YAAY,EACV,eAAe,EACf,SAAS,EACT,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,EACd,2BAA2B,EAC3B,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,SAAS,EACT,0BAA0B,EAC1B,mBAAmB,EACnB,0BAA0B,EAC1B,8BAA8B,EAC9B,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,GACP,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -8,6 +8,9 @@ export { ArcaError, ArcaAuthError, ArcaSoapError, ArcaServiceError, ArcaValidati
8
8
  export { WsaaClient, MemoryTicketStorage, FileTicketStorage } from '@ramiidv/arca-common';
9
9
  // Constantes
10
10
  export { MTXCA_ENDPOINTS, MTXCA_NAMESPACE, MTXCA_SERVICE_ID, ALICUOTAS_IVA, CbteTipo, Concepto, CodigoCondicionIVA, UnidadMedidaEspecial, Moneda, } from './constants.js';
11
+ // QR (RG 4892)
12
+ export { urlQR } from './qr.js';
13
+ export { QR_URL } from '@ramiidv/arca-common';
11
14
  // Validación y redondeo
12
15
  export { validateComprobanteCAE, validateComprobanteCAEA } from './validation.js';
13
16
  export { roundImporte, roundDecimal } from './format.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,wBAAwB;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,sBAAsB;AACtB,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,wCAAwC;AACxC,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA2C1F,aAAa;AACb,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,GACP,MAAM,gBAAgB,CAAC;AAExB,wBAAwB;AACxB,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,wBAAwB;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,sBAAsB;AACtB,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,wCAAwC;AACxC,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA2C1F,aAAa;AACb,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,GACP,MAAM,gBAAgB,CAAC;AAExB,eAAe;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,wBAAwB;AACxB,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -13,6 +13,11 @@ export interface MtxcaClientConfig {
13
13
  onEvent?: (event: ArcaEvent) => void;
14
14
  fetch?: typeof fetch;
15
15
  legacyTls?: LegacyTlsMode;
16
+ /**
17
+ * Recibe el `evento` (aviso informativo de ARCA) de cualquier respuesta que
18
+ * lo traiga. Los errores del callback se ignoran.
19
+ */
20
+ onEvento?: (evento: CodigoDescripcion, method: string) => void;
16
21
  }
17
22
  /**
18
23
  * Cliente de bajo nivel de WSMTXCA: una función por operación del WSDL. No
@@ -25,8 +30,11 @@ export interface MtxcaClientConfig {
25
30
  * `ArcaSoapError` tiene `uncertain: true`.
26
31
  */
27
32
  export declare class MtxcaClient extends SoapServiceClient {
33
+ #private;
28
34
  constructor(config: MtxcaClientConfig);
29
35
  private call;
36
+ /** Pasa el `evento` de la respuesta a `onEvento` (un `evento` ilegible se ignora acá). */
37
+ private notificarEvento;
30
38
  private static authRequest;
31
39
  /** Llamada autenticada: `authRequest` primero, como en todos los request del XSD. */
32
40
  private callAuth;