@ramiidv/arca-mtxca 0.3.0 → 0.5.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 ADDED
@@ -0,0 +1,141 @@
1
+ # Changelog
2
+
3
+ ## 0.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d535462: Cambio incompatible: se quitan `endpoint` y `wsaaEndpoint` (deprecados). Usar `endpoints: { mtxca, wsaa }`.
8
+
9
+ ### Patch Changes
10
+
11
+ - 87f58c1: Un texto obligatorio vacío (o solo con espacios) da el error "no puede estar vacío" en lugar de `formato inválido (\S)`.
12
+ - Updated dependencies [87f58c1]
13
+ - @ramiidv/arca-common@0.6.0
14
+
15
+ ## 0.4.0
16
+
17
+ ### Minor Changes
18
+
19
+ - bed68e8: Paquetes solo ESM y Node >= 20.19. `arca-common`, `arca-facturacion` y
20
+ `arca-padron` dejan de publicar un build CommonJS: desde CommonJS se cargan con
21
+ `require()` (require(esm), Node >= 20.19 / 22.12). Todos los paquetes pasan a
22
+ requerir Node >= 20.19.0 (Node 18 y 20 sin soporte). El código vive ahora en el
23
+ monorepo `arca-sdks`.
24
+ - f8bd053: Las clases principales extienden `ArcaSdkBase` de arca-common, así que todos
25
+ los SDKs tienen la misma base: `wsaa`, `cuit`, `production`, `on()`/`off()`,
26
+ `clearAuthCache()`, `config.wsaa` (WsaaClient compartido) y `config.signal`
27
+ (signal global). arca-mtxca acepta `endpoints: { mtxca, wsaa }` (`endpoint` y
28
+ `wsaaEndpoint` quedan deprecados). Los `dummy`/`status` validan la respuesta con
29
+ `parseServerStatus`: si falta un campo lanzan `ArcaSoapError`.
30
+ - c9f1444: Requests y respuestas se validan, serializan y decodifican con el DSL de
31
+ `@ramiidv/arca-common/schema`, transcripto del XSD oficial de cada servicio.
32
+
33
+ - Corrección: las respuestas se parsean sin conversión numérica, así que los
34
+ `xs:string` con contenido numérico ya no pierden ceros a la izquierda ni
35
+ decimales (ej: `"0012"`, `"1.50"`, `DocNro`, `codigoSeguridad`).
36
+ - Los campos desconocidos en el input se rechazan con `ArcaValidationError`
37
+ (antes se ignoraban).
38
+ - Todos los errores de validación se informan juntos (`details`), con mensajes
39
+ del tipo `campo: motivo`. Cambió el texto de los mensajes.
40
+ - arca-fecred deja de recortar espacios de los textos y envía `codCtaCte` tal
41
+ cual; porcentaje y cotización se envían con decimales fijos.
42
+
43
+ ### Patch Changes
44
+
45
+ - fd438bc: `@ramiidv/arca-common/testing` exporta `loadXsdTypes` y `checkSchemaAgainstXsd`
46
+ para comparar los schemas del DSL con el XSD de un WSDL oficial. Todos los
47
+ schemas de agro, cdc, fecred, mtxca, padron y sire se verifican contra los WSDL
48
+ de producción. arca-mtxca: los renombres API ↔ XML usan `xml()` del DSL y un
49
+ error en `actividades` se reporta en `actividades[i].codigo`.
50
+ - 20ecf7d: DSL de schemas, segunda versión:
51
+
52
+ - Corrección: `dec()` redondea sobre el valor decimal escrito (`8.575` →
53
+ `8.58`; antes daba `8.57` por la representación binaria). Afecta los importes
54
+ que los SDKs envían redondeados.
55
+ - `must()` rechaza también el valor vacío; los elementos `xsi:nil` cuentan
56
+ como ausentes (en una lista, como lista vacía); `must()` en listas exige el
57
+ elemento; un objeto opcional vacío se omite y uno obligatorio valida sus hijos.
58
+ - Al decodificar se validan enteros (`int()`) y valores permitidos
59
+ (`str({ values })`).
60
+ - Nuevos: `siNo()` (S/N ↔ boolean), `double()`, `xml(nombre, campo)` (nombre
61
+ distinto en el XML), `custom(encode, decode)`, `roundHalfUp()` y
62
+ `decodeResponse(..., { emptyLists: 'omit' })`.
63
+ - Updated dependencies [8c02c30]
64
+ - Updated dependencies [f8bd053]
65
+ - Updated dependencies [242fb5f]
66
+ - Updated dependencies [fd438bc]
67
+ - Updated dependencies [bed68e8]
68
+ - Updated dependencies [20ecf7d]
69
+ - Updated dependencies [b86db00]
70
+ - @ramiidv/arca-common@0.5.0
71
+
72
+ ## 0.3.0 (2026-11-01)
73
+
74
+ Revisión completa contra el WSDL de WSMTXCA y el manual del desarrollador (v0.25.8). Las versiones anteriores no podían autorizar comprobantes: el request no cumplía el XSD.
75
+
76
+ ### Breaking
77
+
78
+ - Requiere `@ramiidv/arca-common` ^0.4.0.
79
+ - `autorizar()` recibe el `ComprobanteType` con los nombres del XSD (`codigoTipoComprobante`, `numeroPuntoVenta`, `codigoConcepto`, `codigoTipoDocumento`, `numeroDocumento`, `fechaEmision`, `importeSubtotal`, `codigoMoneda`, `fechaServicioDesde/Hasta`, `fechaVencimientoPago`, `comprobantesAsociados`, ...) en lugar de `{ ptoVta, cbteTipo, invoice }`. `importeSubtotal` y `codigoMoneda` son obligatorios.
80
+ - Ítems: `unidadMedida` → `codigoUnidadMedida`; `cantidad`, `precioUnitario` e `importeIVA` pasan a ser opcionales según las reglas del manual; se agregan `unidadesMtx` y `codigoMtx`.
81
+ - `SubtotalIVA` ya no tiene `baseImponible`; `MtxcaTributo` → `MtxcaOtroTributo` (`codigo`, sin `alicuota`).
82
+ - `autorizar()` devuelve `MtxcaAutorizarResult`: `resultado` `'A' | 'O' | 'R'` y, si no es `R`, `comprobante` con `cae` y `fechaVencimientoCAE`.
83
+ - `consultarComprobante()` devuelve `{ comprobante, observaciones, evento }` con el `ComprobanteType` completo, y lanza `ArcaServiceError` si el comprobante no existe.
84
+ - Las consultas lanzan `ArcaServiceError` ante `arrayErrores` (antes devolvían 0, objetos de ceros o listas vacías).
85
+ - Parámetros: devuelven `{ codigo, descripcion }` (antes `{ Id, Desc, FchDesde, FchHasta }`, campos que no existen en WSMTXCA). Puntos de venta: `{ numeroPuntoVenta, bloqueado, fechaBaja? }`.
86
+ - `getCotizacionMoneda(codigo, fecha?)` devuelve `{ codigoMoneda, fechaCotizacion, cotizacion: number | null }`.
87
+ - `MtxcaClient` recibe `endpoint` (en lugar de `production`) y `MtxcaAuth` es `{ token, sign, cuitRepresentada }`.
88
+ - `ArcaMtxcaConfig` extiende `ArcaBaseConfig`; `cuit` acepta string y se valida el dígito verificador.
89
+ - `clearAuthCache()` es async.
90
+ - `CbteTipo`: 51–53 se renombran a `*_A_SUJETA_RETENCION` (no son clase M). `CodigoCondicionIVA`: se quitan 7, 8 y 9 (no figuran en el manual de WSMTXCA). `Moneda`: solo `PES`, `DOL` y `060`; el resto, con `getMonedas()`.
91
+ - `validateAutorizarRequest`/`validateMtxcaItem` → `validateComprobanteCAE`/`validateComprobanteCAEA`.
92
+
93
+ ### Features
94
+
95
+ - Numeración automática real en `autorizar()` (último autorizado + 1; el error 1502 "sin comprobantes" cuenta como 0) y número explícito opcional.
96
+ - `condicionIVAReceptor` (RG 5616) y `getCondicionesIVAReceptor()`.
97
+ - CAEA: `solicitarCAEA`, `consultarCAEA`, `consultarCAEAEntreFechas`, `informarComprobanteCAEA`, `informarAjusteIVACAEA`, `informarCAEANoUtilizado`, `informarCAEANoUtilizadoPtoVta`, `consultarPtosVtaCAEANoInformados`.
98
+ - `autorizarAjusteIVA`, `getTiposTributo`, `getTiposDatosAdicionales`, `getActividadesVigentes`.
99
+ - Campos del XSD que faltaban: `cancelaEnMismaMonedaExtranjera`, `periodoComprobantesAsociados`, `datosAdicionales`, `compradores`, `actividades`.
100
+ - Validación local de las reglas excluyentes del manual (presencia por unidad de medida 97/99, fórmulas de ítem, subtotales de IVA por alícuota, gravado/no gravado/exento/subtotal/total con el margen de error del manual), desactivable con `{ validarImportes: false }`.
101
+ - Redondeo según el XSD (2 decimales en importes, 6 en cantidad/precio/bonificación/cotización); `roundImporte` y `roundDecimal` exportados.
102
+ - Opciones de `ArcaBaseConfig`: `ticketStorage`, `clockOffsetMs`, `autoClockSkew`, `loginErrorCooldownMs`, `fetch`, `legacyTls`, `tokenTTLMinutes`; overrides `endpoint` y `wsaaEndpoint`.
103
+ - Todos los métodos aceptan `opts?: CallOptions` (`signal`).
104
+ - Se exportan `ArcaValidationError`, `ArcaTicketVigenteError`, `MemoryTicketStorage` y `FileTicketStorage`.
105
+
106
+ ### Fixes
107
+
108
+ - Namespace `http://impl.service.wsmtxca.afip.gov.ar/service/`, SOAPAction del WSDL y elementos `{operacion}Request` / `{operacion}Response` (verificado con `dummy` en homologación).
109
+ - `ComprobanteType` con los elementos en el orden de la secuencia del XSD y `numeroComprobante` incluido.
110
+ - Las emisiones (`autorizar*`, `informar*`, `solicitarCAEA`) usan `kind: 'emision'`: no se reintentan y los errores con resultado desconocido tienen `uncertain: true`.
111
+ - `consultarCotizacionMoneda` envía `fechaCotizacion` (obligatorio) y lee solo `cotizacionMoneda`.
112
+ - Puntos de venta: se elimina `EmisionTipo` (no existe en la respuesta).
113
+ - Ítems de bonificación/seña (unidad 99/97) se envían sin cantidad ni precio.
114
+ - La validación ya no traga errores que no son de validación.
115
+
116
+ ## 0.2.0 (2026-06-03)
117
+
118
+ ### Fixes
119
+
120
+ - Build standalone en CI: el lockfile resolvía `@ramiidv/arca-common` como ruta local; se regeneró para resolverlo desde npm.
121
+
122
+ ### Chore
123
+
124
+ - Workflow de release (publicación por tag) y workflow de CI para Node 18/20/22.
125
+ - Homepage: <https://arca-sdk.dev/mtxca>.
126
+
127
+ ## 0.1.0 (2026-03-31)
128
+
129
+ ### Features
130
+
131
+ - Initial release
132
+ - Authorize invoices with item-level detail (barcodes, quantities, unit prices) via `autorizar()`
133
+ - Query last authorized comprobante number via `ultimoComprobante()`
134
+ - Compute next comprobante number via `siguienteComprobante()`
135
+ - Retrieve previously authorized comprobantes via `consultarComprobante()`
136
+ - Query parameter tables: tipos comprobante, tipos documento, alicuotas IVA, condiciones IVA, monedas, unidades de medida, puntos de venta, cotizacion de monedas
137
+ - Input validation for `autorizar()` request and item-level fields
138
+ - Enum helpers for CbteTipo, Concepto, CodigoCondicionIVA, and Moneda
139
+ - Service health check via `status()`
140
+ - Automatic WSAA authentication with ticket caching
141
+ - Full TypeScript support with strict types
package/README.md CHANGED
@@ -46,18 +46,20 @@ const res = await mtxca.autorizar({
46
46
  codigoMoneda: Moneda.PESOS,
47
47
  cotizacionMoneda: 1,
48
48
  codigoConcepto: Concepto.PRODUCTOS,
49
- items: [{
50
- unidadesMtx: 1,
51
- codigoMtx: '7790001000012',
52
- codigo: 'P0001',
53
- descripcion: 'Producto de ejemplo',
54
- cantidad: 1,
55
- codigoUnidadMedida: 7,
56
- precioUnitario: 100, // clase A: sin IVA
57
- codigoCondicionIVA: CodigoCondicionIVA.IVA_21,
58
- importeIVA: 21,
59
- importeItem: 121, // con IVA incluido
60
- }],
49
+ items: [
50
+ {
51
+ unidadesMtx: 1,
52
+ codigoMtx: '7790001000012',
53
+ codigo: 'P0001',
54
+ descripcion: 'Producto de ejemplo',
55
+ cantidad: 1,
56
+ codigoUnidadMedida: 7,
57
+ precioUnitario: 100, // clase A: sin IVA
58
+ codigoCondicionIVA: CodigoCondicionIVA.IVA_21,
59
+ importeIVA: 21,
60
+ importeItem: 121, // con IVA incluido
61
+ },
62
+ ],
61
63
  subtotalesIVA: [{ codigo: CodigoCondicionIVA.IVA_21, importe: 21 }],
62
64
  });
63
65
 
@@ -72,27 +74,28 @@ if (res.resultado === 'R') {
72
74
 
73
75
  ## Configuración
74
76
 
75
- `ArcaMtxcaConfig` extiende `ArcaBaseConfig` de `@ramiidv/arca-common`:
76
-
77
- | Opción | Descripción |
78
- | --- | --- |
79
- | `cert`, `key` | Certificado y clave privada PEM. |
80
- | `cuit` | CUIT representada (número o string, con o sin guiones). Se valida el dígito verificador. |
81
- | `production` | `false` (default) = homologación. |
82
- | `endpoint` | URL de WSMTXCA. Si se indica, ignora `production`. |
83
- | `wsaaEndpoint` | URL de WSAA. Si se indica, ignora `production` para el login. |
84
- | `timeout`, `retries`, `retryDelayMs` | Transporte. `retries` solo aplica a consultas. |
85
- | `ticketStorage` | Storage persistente de tickets WSAA (recomendado en producción). |
86
- | `tokenTTLMinutes`, `clockOffsetMs`, `autoClockSkew`, `loginErrorCooldownMs` | Opciones de WSAA. |
87
- | `fetch`, `legacyTls` | `fetch` propio (proxy, tests) y transporte TLS legacy. |
88
- | `onEvent` | Callback de eventos (`auth:*`, `request:*`). |
77
+ `ArcaMtxcaConfig` extiende `ArcaSdkConfig` de `@ramiidv/arca-common`:
78
+
79
+ | Opción | Descripción |
80
+ | --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
81
+ | `cert`, `key` | Certificado y clave privada PEM. |
82
+ | `cuit` | CUIT representada (número o string, con o sin guiones). Se valida el dígito verificador. |
83
+ | `production` | `false` (default) = homologación. |
84
+ | `endpoints` | `{ mtxca?, wsaa? }`: URLs propias (proxy, mock). Ignoran `production`. |
85
+ | `wsaa` | `WsaaClient` compartido con otros SDKs del mismo certificado. |
86
+ | `signal` | `AbortSignal` global: cancela todas las llamadas de la instancia. |
87
+ | `timeout`, `retries`, `retryDelayMs` | Transporte. `retries` solo aplica a consultas. |
88
+ | `ticketStorage` | Storage persistente de tickets WSAA (recomendado en producción). |
89
+ | `tokenTTLMinutes`, `clockOffsetMs`, `autoClockSkew`, `loginErrorCooldownMs` | Opciones de WSAA. |
90
+ | `fetch`, `legacyTls` | `fetch` propio (proxy, tests) y transporte TLS legacy. |
91
+ | `onEvent` | Callback de eventos (`auth:*`, `request:*`). |
89
92
 
90
93
  Endpoints (manual WSMTXCA):
91
94
 
92
- | Entorno | URL |
93
- | --- | --- |
94
- | Homologación | `https://fwshomo.afip.gov.ar/wsmtxca/services/MTXCAService` |
95
- | Producción | `https://serviciosjava.afip.gob.ar/wsmtxca/services/MTXCAService` |
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` |
96
99
 
97
100
  Todos los métodos aceptan un último parámetro `opts?: CallOptions` con `signal` para cancelar.
98
101
 
@@ -125,15 +128,15 @@ subtotalesIVA: [{ codigo: 5, importe: 18.9 }],
125
128
 
126
129
  ## Resultado de una autorización y manejo de errores
127
130
 
128
- | Situación | Qué pasa |
129
- | --- | --- |
130
- | Datos inválidos localmente | `ArcaValidationError` (no se hace ningún request). |
131
- | ARCA aprueba | `{ resultado: 'A', comprobante: { cae, fechaVencimientoCAE, ... } }` |
132
- | ARCA aprueba con observaciones | `{ resultado: 'O', comprobante, observaciones }` |
133
- | ARCA rechaza | `{ resultado: 'R', errores }` — **no lanza**; revisá `resultado`. |
134
- | Consulta con `arrayErrores` | `ArcaServiceError` con `errors[]` (`code`, `msg`). |
135
- | Fault SOAP, HTTP, red, timeout | `ArcaSoapError` (`uncertain`, `faultString`, `statusCode`). |
136
- | Login WSAA | `ArcaAuthError` / `ArcaTicketVigenteError`. |
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`. |
137
140
 
138
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.
139
142
 
@@ -169,44 +172,44 @@ Las solicitudes de un mismo punto de venta y tipo deben ser secuenciales (ARCA r
169
172
 
170
173
  ### Comprobantes con CAE
171
174
 
172
- | Método | Operación WSMTXCA |
173
- | --- | --- |
174
- | `autorizar(req, opts?)` | `autorizarComprobante` (número automático si se omite) |
175
- | `autorizarAjusteIVA(req, opts?)` | `autorizarAjusteIVA` (solo valida el XSD: tiene reglas propias) |
176
- | `ultimoComprobante(ptoVta, cbteTipo, opts?)` | `consultarUltimoComprobanteAutorizado` |
177
- | `siguienteComprobante(ptoVta, cbteTipo, opts?)` | último + 1 |
175
+ | Método | Operación WSMTXCA |
176
+ | -------------------------------------------------------- | ------------------------------------------------------------------ |
177
+ | `autorizar(req, opts?)` | `autorizarComprobante` (número automático si se omite) |
178
+ | `autorizarAjusteIVA(req, opts?)` | `autorizarAjusteIVA` (solo valida el XSD: tiene reglas propias) |
179
+ | `ultimoComprobante(ptoVta, cbteTipo, opts?)` | `consultarUltimoComprobanteAutorizado` |
180
+ | `siguienteComprobante(ptoVta, cbteTipo, opts?)` | último + 1 |
178
181
  | `consultarComprobante(cbteTipo, ptoVta, cbteNro, opts?)` | `consultarComprobante` → `{ comprobante, observaciones, evento? }` |
179
182
 
180
183
  ### CAEA
181
184
 
182
- | Método | Operación WSMTXCA |
183
- | --- | --- |
184
- | `solicitarCAEA(periodo, orden, opts?)` | `solicitarCAEA` (`periodo` AAAAMM, `orden` 1 o 2) |
185
- | `consultarCAEA(caea, opts?)` | `consultarCAEA` |
186
- | `consultarCAEAEntreFechas(desde, hasta, opts?)` | `consultarCAEAEntreFechas` |
187
- | `informarComprobanteCAEA(comp, opts?)` | `informarComprobanteCAEA` (`comp.caea` = CAEA usado) |
188
- | `informarAjusteIVACAEA(comp, opts?)` | `informarAjusteIVACAEA` |
189
- | `informarCAEANoUtilizado(caea, opts?)` | `informarCAEANoUtilizado` |
190
- | `informarCAEANoUtilizadoPtoVta(caea, ptoVta, opts?)` | `informarCAEANoUtilizadoPtoVta` |
191
- | `consultarPtosVtaCAEANoInformados(caea, opts?)` | `consultarPtosVtaCAEANoInformados` |
185
+ | Método | Operación WSMTXCA |
186
+ | ---------------------------------------------------- | ---------------------------------------------------- |
187
+ | `solicitarCAEA(periodo, orden, opts?)` | `solicitarCAEA` (`periodo` AAAAMM, `orden` 1 o 2) |
188
+ | `consultarCAEA(caea, opts?)` | `consultarCAEA` |
189
+ | `consultarCAEAEntreFechas(desde, hasta, opts?)` | `consultarCAEAEntreFechas` |
190
+ | `informarComprobanteCAEA(comp, opts?)` | `informarComprobanteCAEA` (`comp.caea` = CAEA usado) |
191
+ | `informarAjusteIVACAEA(comp, opts?)` | `informarAjusteIVACAEA` |
192
+ | `informarCAEANoUtilizado(caea, opts?)` | `informarCAEANoUtilizado` |
193
+ | `informarCAEANoUtilizadoPtoVta(caea, ptoVta, opts?)` | `informarCAEANoUtilizadoPtoVta` |
194
+ | `consultarPtosVtaCAEANoInformados(caea, opts?)` | `consultarPtosVtaCAEANoInformados` |
192
195
 
193
196
  ### Parámetros y estado
194
197
 
195
- | Método | Operación | Devuelve |
196
- | --- | --- | --- |
197
- | `status()` | `dummy` (sin auth) | `{ appserver, dbserver, authserver }` |
198
- | `getTiposComprobante()` | `consultarTiposComprobante` | `CodigoDescripcion[]` |
199
- | `getTiposDocumento()` | `consultarTiposDocumento` | `CodigoDescripcion[]` |
200
- | `getAlicuotasIVA()` | `consultarAlicuotasIVA` | `CodigoDescripcion[]` |
201
- | `getCondicionesIVA()` | `consultarCondicionesIVA` | `CodigoDescripcion[]` |
202
- | `getCondicionesIVAReceptor(cbteTipo)` | `consultarCondicionesIVAReceptor` | `CodigoDescripcion[]` |
203
- | `getMonedas()` | `consultarMonedas` | `{ codigo: string, descripcion }[]` |
204
- | `getCotizacionMoneda(codigo, fecha?)` | `consultarCotizacionMoneda` | `{ codigoMoneda, fechaCotizacion, cotizacion: number \| null }` |
205
- | `getUnidadesMedida()` | `consultarUnidadesMedida` | `CodigoDescripcion[]` |
206
- | `getTiposTributo()` | `consultarTiposTributo` | `CodigoDescripcion[]` |
207
- | `getTiposDatosAdicionales()` | `consultarTiposDatosAdicionales` | `CodigoDescripcion[]` |
208
- | `getActividadesVigentes()` | `consultarActividadesVigentes` | `{ codigo, orden, descripcion }[]` |
209
- | `getPuntosVenta()` / `getPuntosVentaCAE()` / `getPuntosVentaCAEA()` | `consultarPuntosVenta*` | `{ numeroPuntoVenta, bloqueado, fechaBaja? }[]` |
198
+ | Método | Operación | Devuelve |
199
+ | ------------------------------------------------------------------- | --------------------------------- | --------------------------------------------------------------- |
200
+ | `status()` | `dummy` (sin auth) | `{ appserver, dbserver, authserver }` |
201
+ | `getTiposComprobante()` | `consultarTiposComprobante` | `CodigoDescripcion[]` |
202
+ | `getTiposDocumento()` | `consultarTiposDocumento` | `CodigoDescripcion[]` |
203
+ | `getAlicuotasIVA()` | `consultarAlicuotasIVA` | `CodigoDescripcion[]` |
204
+ | `getCondicionesIVA()` | `consultarCondicionesIVA` | `CodigoDescripcion[]` |
205
+ | `getCondicionesIVAReceptor(cbteTipo)` | `consultarCondicionesIVAReceptor` | `CodigoDescripcion[]` |
206
+ | `getMonedas()` | `consultarMonedas` | `{ codigo: string, descripcion }[]` |
207
+ | `getCotizacionMoneda(codigo, fecha?)` | `consultarCotizacionMoneda` | `{ codigoMoneda, fechaCotizacion, cotizacion: number \| null }` |
208
+ | `getUnidadesMedida()` | `consultarUnidadesMedida` | `CodigoDescripcion[]` |
209
+ | `getTiposTributo()` | `consultarTiposTributo` | `CodigoDescripcion[]` |
210
+ | `getTiposDatosAdicionales()` | `consultarTiposDatosAdicionales` | `CodigoDescripcion[]` |
211
+ | `getActividadesVigentes()` | `consultarActividadesVigentes` | `{ codigo, orden, descripcion }[]` |
212
+ | `getPuntosVenta()` / `getPuntosVentaCAE()` / `getPuntosVentaCAEA()` | `consultarPuntosVenta*` | `{ numeroPuntoVenta, bloqueado, fechaBaja? }[]` |
210
213
 
211
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).
212
215
 
@@ -1,4 +1,4 @@
1
- import { WsaaClient } from '@ramiidv/arca-common';
1
+ import { ArcaSdkBase } from '@ramiidv/arca-common';
2
2
  import type { CallOptions, ServerStatus } from '@ramiidv/arca-common';
3
3
  import { MtxcaClient } from './mtxca-client.js';
4
4
  import type { ActividadVigente, ArcaMtxcaConfig, AutorizarOptions, AutorizarRequest, CodigoDescripcion, CodigoDescripcionString, CotizacionResult, FechaInput, MtxcaAutorizarResult, MtxcaCAEA, MtxcaCAEANoUtilizadoResult, MtxcaComprobanteCAEA, MtxcaConsultaComprobanteResult, MtxcaInformarCAEAResult, PuntoVenta } from './types.js';
@@ -14,13 +14,10 @@ import type { ActividadVigente, ArcaMtxcaConfig, AutorizarOptions, AutorizarRequ
14
14
  * else console.log(res.comprobante.cae);
15
15
  * ```
16
16
  */
17
- export declare class ArcaMtxca {
18
- /** Cliente WSAA (acceso directo). */
19
- readonly wsaa: WsaaClient;
17
+ export declare class ArcaMtxca extends ArcaSdkBase<'mtxca'> {
20
18
  /** Cliente SOAP de bajo nivel (acceso directo). */
21
19
  readonly client: MtxcaClient;
22
- /** CUIT representada, normalizada a 11 dígitos. */
23
- readonly cuit: string;
20
+ /** @throws ArcaValidationError si la CUIT es inválida. */
24
21
  constructor(config: ArcaMtxcaConfig);
25
22
  private auth;
26
23
  /**
@@ -101,7 +98,5 @@ export declare class ArcaMtxca {
101
98
  getPuntosVenta(opts?: CallOptions): Promise<PuntoVenta[]>;
102
99
  getPuntosVentaCAE(opts?: CallOptions): Promise<PuntoVenta[]>;
103
100
  getPuntosVentaCAEA(opts?: CallOptions): Promise<PuntoVenta[]>;
104
- /** Descarta el ticket de acceso de WSMTXCA (memoria y `ticketStorage`). */
105
- clearAuthCache(): Promise<void>;
106
101
  }
107
102
  //# sourceMappingURL=arca-mtxca.d.ts.map
@@ -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,8 +1,8 @@
1
- import { ArcaServiceError, formatDate, validateCuit, WsaaClient } from '@ramiidv/arca-common';
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
4
  import { buildComprobante } from './serialize.js';
5
- import { validateComprobanteCAE, validateComprobanteCAEA } from './validation.js';
5
+ import { reglasComprobanteCAE, reglasComprobanteCAEA } from './validation.js';
6
6
  /** Error 1502 de consultarUltimoComprobanteAutorizado: no hay comprobantes para ese punto de venta y tipo. */
7
7
  const SIN_COMPROBANTES = 1502;
8
8
  /**
@@ -17,45 +17,19 @@ const SIN_COMPROBANTES = 1502;
17
17
  * else console.log(res.comprobante.cae);
18
18
  * ```
19
19
  */
20
- export class ArcaMtxca {
21
- /** Cliente WSAA (acceso directo). */
22
- wsaa;
20
+ export class ArcaMtxca extends ArcaSdkBase {
23
21
  /** Cliente SOAP de bajo nivel (acceso directo). */
24
22
  client;
25
- /** CUIT representada, normalizada a 11 dígitos. */
26
- cuit;
23
+ /** @throws ArcaValidationError si la CUIT es inválida. */
27
24
  constructor(config) {
28
- this.cuit = validateCuit(config.cuit);
29
- const production = config.production ?? false;
30
- this.wsaa = new WsaaClient({
31
- cert: config.cert,
32
- key: config.key,
33
- production,
34
- endpoint: config.wsaaEndpoint,
35
- tokenTTLMinutes: config.tokenTTLMinutes,
36
- timeout: config.timeout,
37
- retries: config.retries,
38
- retryDelayMs: config.retryDelayMs,
39
- onEvent: config.onEvent,
40
- ticketStorage: config.ticketStorage,
41
- clockOffsetMs: config.clockOffsetMs,
42
- autoClockSkew: config.autoClockSkew,
43
- loginErrorCooldownMs: config.loginErrorCooldownMs,
44
- fetch: config.fetch,
45
- legacyTls: config.legacyTls,
46
- });
25
+ super(config, { mtxca: MTXCA_SERVICE_ID });
47
26
  this.client = new MtxcaClient({
48
- endpoint: config.endpoint ?? (production ? MTXCA_ENDPOINTS.production : MTXCA_ENDPOINTS.testing),
49
- timeout: config.timeout,
50
- retries: config.retries,
51
- retryDelayMs: config.retryDelayMs,
52
- onEvent: config.onEvent,
53
- fetch: config.fetch,
54
- legacyTls: config.legacyTls,
27
+ endpoint: this.endpoint(MTXCA_ENDPOINTS, config.endpoints?.mtxca),
28
+ ...this.transport,
55
29
  });
56
30
  }
57
31
  async auth(opts) {
58
- const ticket = await this.wsaa.getAccessTicket(MTXCA_SERVICE_ID, opts);
32
+ const ticket = await this.ticket('mtxca', opts);
59
33
  return { token: ticket.token, sign: ticket.sign, cuitRepresentada: this.cuit };
60
34
  }
61
35
  // =========================================================================
@@ -88,16 +62,14 @@ export class ArcaMtxca {
88
62
  }
89
63
  async autorizarCAE(method, request, opts) {
90
64
  // Valida antes de pedir el número: un error local no debe costar requests.
91
- buildComprobante({ ...request, numeroComprobante: request?.numeroComprobante ?? 1 }, 'cae');
92
- if (opts?.validarImportes !== false)
93
- validateComprobanteCAE(request);
65
+ buildComprobante({ ...request, numeroComprobante: request?.numeroComprobante ?? 1 }, 'cae', opts?.validarImportes !== false ? reglasComprobanteCAE : undefined);
94
66
  const numeroComprobante = request.numeroComprobante ??
95
67
  (await this.siguienteComprobante(request.numeroPuntoVenta, request.codigoTipoComprobante, opts));
96
68
  const auth = await this.auth(opts);
97
69
  const comprobante = { ...request, numeroComprobante };
98
70
  return method === 'autorizarComprobante'
99
- ? this.client.autorizarComprobante(auth, comprobante, opts)
100
- : this.client.autorizarAjusteIVA(auth, comprobante, opts);
71
+ ? this.client.autorizarComprobante(auth, comprobante, this.callOptions(opts))
72
+ : this.client.autorizarAjusteIVA(auth, comprobante, this.callOptions(opts));
101
73
  }
102
74
  /**
103
75
  * Último número autorizado o informado para un punto de venta y tipo. Si no
@@ -107,7 +79,7 @@ export class ArcaMtxca {
107
79
  async ultimoComprobante(ptoVta, cbteTipo, opts) {
108
80
  const auth = await this.auth(opts);
109
81
  try {
110
- return await this.client.consultarUltimoComprobanteAutorizado(auth, ptoVta, cbteTipo, opts);
82
+ return await this.client.consultarUltimoComprobanteAutorizado(auth, ptoVta, cbteTipo, this.callOptions(opts));
111
83
  }
112
84
  catch (e) {
113
85
  if (e instanceof ArcaServiceError && e.errors.length > 0 && e.errors.every((x) => x.code === SIN_COMPROBANTES)) {
@@ -123,7 +95,7 @@ export class ArcaMtxca {
123
95
  /** Consulta un comprobante autorizado (CAE) o informado (CAEA). Lanza `ArcaServiceError` si no existe. */
124
96
  async consultarComprobante(cbteTipo, ptoVta, cbteNro, opts) {
125
97
  const auth = await this.auth(opts);
126
- return this.client.consultarComprobante(auth, cbteTipo, ptoVta, cbteNro, opts);
98
+ return this.client.consultarComprobante(auth, cbteTipo, ptoVta, cbteNro, this.callOptions(opts));
127
99
  }
128
100
  // =========================================================================
129
101
  // CAEA
@@ -135,17 +107,17 @@ export class ArcaMtxca {
135
107
  */
136
108
  async solicitarCAEA(periodo, orden, opts) {
137
109
  const auth = await this.auth(opts);
138
- return this.client.solicitarCAEA(auth, periodo, orden, opts);
110
+ return this.client.solicitarCAEA(auth, periodo, orden, this.callOptions(opts));
139
111
  }
140
112
  /** Consulta un CAEA otorgado. */
141
113
  async consultarCAEA(caea, opts) {
142
114
  const auth = await this.auth(opts);
143
- return this.client.consultarCAEA(auth, caea, opts);
115
+ return this.client.consultarCAEA(auth, caea, this.callOptions(opts));
144
116
  }
145
117
  /** CAEAs otorgados entre dos fechas. */
146
118
  async consultarCAEAEntreFechas(fechaDesde, fechaHasta, opts) {
147
119
  const auth = await this.auth(opts);
148
- return this.client.consultarCAEAEntreFechas(auth, fechaDesde, fechaHasta, opts);
120
+ return this.client.consultarCAEAEntreFechas(auth, fechaDesde, fechaHasta, this.callOptions(opts));
149
121
  }
150
122
  /**
151
123
  * Informa un comprobante emitido con CAEA (`informarComprobanteCAEA`). Valida
@@ -153,95 +125,87 @@ export class ArcaMtxca {
153
125
  * `resultado: 'R'`. Ante `uncertain`, verificá con `consultarComprobante()`.
154
126
  */
155
127
  async informarComprobanteCAEA(comprobante, opts) {
156
- buildComprobante(comprobante, 'caea');
157
- validateComprobanteCAEA(comprobante);
128
+ buildComprobante(comprobante, 'caea', reglasComprobanteCAEA);
158
129
  const auth = await this.auth(opts);
159
- return this.client.informarComprobanteCAEA(auth, comprobante, opts);
130
+ return this.client.informarComprobanteCAEA(auth, comprobante, this.callOptions(opts));
160
131
  }
161
132
  /** Informa un ajuste de IVA emitido con CAEA (`informarAjusteIVACAEA`). Solo valida el XSD. */
162
133
  async informarAjusteIVACAEA(comprobante, opts) {
163
134
  const auth = await this.auth(opts);
164
- return this.client.informarAjusteIVACAEA(auth, comprobante, opts);
135
+ return this.client.informarAjusteIVACAEA(auth, comprobante, this.callOptions(opts));
165
136
  }
166
137
  /** Informa que un CAEA no se utilizó. Un rechazo devuelve `resultado: 'R'`. */
167
138
  async informarCAEANoUtilizado(caea, opts) {
168
139
  const auth = await this.auth(opts);
169
- return this.client.informarCAEANoUtilizado(auth, caea, opts);
140
+ return this.client.informarCAEANoUtilizado(auth, caea, this.callOptions(opts));
170
141
  }
171
142
  /** Informa que un CAEA no se utilizó en un punto de venta. Un rechazo devuelve `resultado: 'R'`. */
172
143
  async informarCAEANoUtilizadoPtoVta(caea, ptoVta, opts) {
173
144
  const auth = await this.auth(opts);
174
- return this.client.informarCAEANoUtilizadoPtoVta(auth, caea, ptoVta, opts);
145
+ return this.client.informarCAEANoUtilizadoPtoVta(auth, caea, ptoVta, this.callOptions(opts));
175
146
  }
176
147
  /** Puntos de venta que todavía no informaron movimientos para un CAEA. */
177
148
  async consultarPtosVtaCAEANoInformados(caea, opts) {
178
149
  const auth = await this.auth(opts);
179
- return this.client.consultarPtosVtaCAEANoInformados(auth, caea, opts);
150
+ return this.client.consultarPtosVtaCAEANoInformados(auth, caea, this.callOptions(opts));
180
151
  }
181
152
  // =========================================================================
182
153
  // Estado
183
154
  // =========================================================================
184
155
  /** Estado del servicio (`dummy`). No requiere autenticación. */
185
156
  async status(opts) {
186
- return this.client.dummy(opts);
157
+ return this.client.dummy(this.callOptions(opts));
187
158
  }
188
159
  // =========================================================================
189
160
  // Parámetros
190
161
  // =========================================================================
191
162
  async getTiposComprobante(opts) {
192
- return this.client.consultarTiposComprobante(await this.auth(opts), opts);
163
+ return this.client.consultarTiposComprobante(await this.auth(opts), this.callOptions(opts));
193
164
  }
194
165
  async getTiposDocumento(opts) {
195
- return this.client.consultarTiposDocumento(await this.auth(opts), opts);
166
+ return this.client.consultarTiposDocumento(await this.auth(opts), this.callOptions(opts));
196
167
  }
197
168
  async getAlicuotasIVA(opts) {
198
- return this.client.consultarAlicuotasIVA(await this.auth(opts), opts);
169
+ return this.client.consultarAlicuotasIVA(await this.auth(opts), this.callOptions(opts));
199
170
  }
200
171
  /** Condiciones de IVA de los ítems. */
201
172
  async getCondicionesIVA(opts) {
202
- return this.client.consultarCondicionesIVA(await this.auth(opts), opts);
173
+ return this.client.consultarCondicionesIVA(await this.auth(opts), this.callOptions(opts));
203
174
  }
204
175
  /** Condiciones de IVA del receptor admitidas para un tipo de comprobante (RG 5616). */
205
176
  async getCondicionesIVAReceptor(cbteTipo, opts) {
206
- return this.client.consultarCondicionesIVAReceptor(await this.auth(opts), cbteTipo, opts);
177
+ return this.client.consultarCondicionesIVAReceptor(await this.auth(opts), cbteTipo, this.callOptions(opts));
207
178
  }
208
179
  async getMonedas(opts) {
209
- return this.client.consultarMonedas(await this.auth(opts), opts);
180
+ return this.client.consultarMonedas(await this.auth(opts), this.callOptions(opts));
210
181
  }
211
182
  /**
212
183
  * Cotización de una moneda para una fecha (default: hoy en Argentina).
213
184
  * `cotizacion` es `null` si ARCA no tiene cotización.
214
185
  */
215
186
  async getCotizacionMoneda(codigoMoneda, fecha = formatDate(new Date()), opts) {
216
- return this.client.consultarCotizacionMoneda(await this.auth(opts), codigoMoneda, fecha, opts);
187
+ return this.client.consultarCotizacionMoneda(await this.auth(opts), codigoMoneda, fecha, this.callOptions(opts));
217
188
  }
218
189
  async getUnidadesMedida(opts) {
219
- return this.client.consultarUnidadesMedida(await this.auth(opts), opts);
190
+ return this.client.consultarUnidadesMedida(await this.auth(opts), this.callOptions(opts));
220
191
  }
221
192
  async getTiposTributo(opts) {
222
- return this.client.consultarTiposTributo(await this.auth(opts), opts);
193
+ return this.client.consultarTiposTributo(await this.auth(opts), this.callOptions(opts));
223
194
  }
224
195
  async getTiposDatosAdicionales(opts) {
225
- return this.client.consultarTiposDatosAdicionales(await this.auth(opts), opts);
196
+ return this.client.consultarTiposDatosAdicionales(await this.auth(opts), this.callOptions(opts));
226
197
  }
227
198
  async getActividadesVigentes(opts) {
228
- return this.client.consultarActividadesVigentes(await this.auth(opts), opts);
199
+ return this.client.consultarActividadesVigentes(await this.auth(opts), this.callOptions(opts));
229
200
  }
230
201
  async getPuntosVenta(opts) {
231
- return this.client.consultarPuntosVenta(await this.auth(opts), opts);
202
+ return this.client.consultarPuntosVenta(await this.auth(opts), this.callOptions(opts));
232
203
  }
233
204
  async getPuntosVentaCAE(opts) {
234
- return this.client.consultarPuntosVentaCAE(await this.auth(opts), opts);
205
+ return this.client.consultarPuntosVentaCAE(await this.auth(opts), this.callOptions(opts));
235
206
  }
236
207
  async getPuntosVentaCAEA(opts) {
237
- return this.client.consultarPuntosVentaCAEA(await this.auth(opts), opts);
238
- }
239
- // =========================================================================
240
- // Cache
241
- // =========================================================================
242
- /** Descarta el ticket de acceso de WSMTXCA (memoria y `ticketStorage`). */
243
- async clearAuthCache() {
244
- await this.wsaa.clearTicket(MTXCA_SERVICE_ID);
208
+ return this.client.consultarPuntosVentaCAEA(await this.auth(opts), this.callOptions(opts));
245
209
  }
246
210
  }
247
211
  //# sourceMappingURL=arca-mtxca.js.map