@ramiidv/arca-mtxca 0.1.0 → 0.3.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.
@@ -1,99 +1,107 @@
1
1
  import { WsaaClient } from '@ramiidv/arca-common';
2
- import type { ServerStatus } from '@ramiidv/arca-common';
2
+ import type { CallOptions, ServerStatus } from '@ramiidv/arca-common';
3
3
  import { MtxcaClient } from './mtxca-client.js';
4
- import type { ArcaMtxcaConfig, AutorizarRequest, MtxcaInvoiceResult, MtxcaComprobante, ParamItem, MonedaItem, UnidadMedidaItem, PtoVentaItem, CotizacionResult } from './types.js';
4
+ import type { ActividadVigente, ArcaMtxcaConfig, AutorizarOptions, AutorizarRequest, CodigoDescripcion, CodigoDescripcionString, CotizacionResult, FechaInput, MtxcaAutorizarResult, MtxcaCAEA, MtxcaCAEANoUtilizadoResult, MtxcaComprobanteCAEA, MtxcaConsultaComprobanteResult, MtxcaInformarCAEAResult, PuntoVenta } from './types.js';
5
5
  /**
6
- * Main orchestrator class for the WSMTXCA web service.
7
- *
8
- * Provides high-level methods that handle WSAA authentication automatically.
9
- * WSMTXCA is used for electronic invoicing WITH item-level detail (barcodes,
10
- * quantities, unit prices, product descriptions per line).
6
+ * Cliente de alto nivel de WSMTXCA (factura electrónica con detalle de
7
+ * ítems): autenticación WSAA automática, numeración y validación local.
11
8
  *
12
9
  * @example
13
10
  * ```ts
14
- * import { ArcaMtxca, CbteTipo, CodigoCondicionIVA } from '@ramiidv/arca-mtxca';
15
- * import { readFileSync } from 'fs';
16
- *
17
- * const mtxca = new ArcaMtxca({
18
- * cert: readFileSync('cert.pem', 'utf-8'),
19
- * key: readFileSync('key.pem', 'utf-8'),
20
- * cuit: 20123456789,
21
- * production: false,
22
- * });
23
- *
24
- * const result = await mtxca.autorizar({
25
- * ptoVta: 1,
26
- * cbteTipo: CbteTipo.FACTURA_B,
27
- * invoice: {
28
- * concepto: 1,
29
- * docTipo: 99,
30
- * docNro: 0,
31
- * cbteFch: '2026-03-31',
32
- * importeTotal: 121,
33
- * items: [{
34
- * descripcion: 'Producto de ejemplo',
35
- * cantidad: 1,
36
- * unidadMedida: 7,
37
- * precioUnitario: 100,
38
- * importeItem: 100,
39
- * codigoCondicionIVA: CodigoCondicionIVA.IVA_21,
40
- * importeIVA: 21,
41
- * }],
42
- * },
43
- * });
11
+ * const mtxca = new ArcaMtxca({ cert, key, cuit: '20123456786' });
12
+ * const res = await mtxca.autorizar({ ...comprobante });
13
+ * if (res.resultado === 'R') console.error(res.errores);
14
+ * else console.log(res.comprobante.cae);
44
15
  * ```
45
16
  */
46
17
  export declare class ArcaMtxca {
47
- /** Low-level WSAA client for direct access */
18
+ /** Cliente WSAA (acceso directo). */
48
19
  readonly wsaa: WsaaClient;
49
- /** Low-level MTXCA SOAP client for direct access */
20
+ /** Cliente SOAP de bajo nivel (acceso directo). */
50
21
  readonly client: MtxcaClient;
51
- private readonly cuit;
52
- private readonly onEvent?;
22
+ /** CUIT representada, normalizada a 11 dígitos. */
23
+ readonly cuit: string;
53
24
  constructor(config: ArcaMtxcaConfig);
54
- private getAuth;
25
+ private auth;
26
+ /**
27
+ * Autoriza un comprobante con detalle de ítems (`autorizarComprobante`).
28
+ *
29
+ * - Valida contra el XSD, redondea importes y (salvo `validarImportes: false`)
30
+ * valida la coherencia de importes según el manual.
31
+ * - Sin `numeroComprobante`, usa el último autorizado + 1. Las solicitudes
32
+ * para un mismo punto de venta y tipo deben ser secuenciales (error 135).
33
+ * - Un rechazo devuelve `resultado: 'R'` con `errores`; `O` es aprobado con
34
+ * observaciones.
35
+ * - Si lanza `ArcaSoapError` con `uncertain: true`, el comprobante pudo
36
+ * haberse autorizado: NO reintentes a ciegas; usá `ultimoComprobante()` y
37
+ * `consultarComprobante()` para saber si quedó autorizado.
38
+ */
39
+ autorizar(request: AutorizarRequest, opts?: AutorizarOptions): Promise<MtxcaAutorizarResult>;
55
40
  /**
56
- * Autoriza un comprobante con detalle de articulos.
57
- * Obtiene automaticamente el numero de comprobante siguiente.
41
+ * Autoriza un ajuste de IVA (`autorizarAjusteIVA`, ND/NC 2, 3, 7, 8, 52, 53).
42
+ * Tiene reglas propias (ej. importeSubtotal 0, sin gravado/no gravado/exento),
43
+ * así que solo se valida contra el XSD. Misma numeración y manejo de errores
44
+ * que `autorizar()`.
58
45
  */
59
- autorizar(request: AutorizarRequest): Promise<MtxcaInvoiceResult>;
46
+ autorizarAjusteIVA(request: AutorizarRequest, opts?: CallOptions): Promise<MtxcaAutorizarResult>;
47
+ private autorizarCAE;
60
48
  /**
61
- * Ultimo numero de comprobante autorizado para un punto de venta y tipo.
49
+ * Último número autorizado o informado para un punto de venta y tipo. Si no
50
+ * hay ninguno (error 1502 de ARCA), devuelve 0. Cualquier otro error lanza
51
+ * `ArcaServiceError`.
62
52
  */
63
- ultimoComprobante(ptoVta: number, cbteTipo: number): Promise<number>;
53
+ ultimoComprobante(ptoVta: number, cbteTipo: number, opts?: CallOptions): Promise<number>;
54
+ /** Siguiente número de comprobante (último + 1). */
55
+ siguienteComprobante(ptoVta: number, cbteTipo: number, opts?: CallOptions): Promise<number>;
56
+ /** Consulta un comprobante autorizado (CAE) o informado (CAEA). Lanza `ArcaServiceError` si no existe. */
57
+ consultarComprobante(cbteTipo: number, ptoVta: number, cbteNro: number, opts?: CallOptions): Promise<MtxcaConsultaComprobanteResult>;
64
58
  /**
65
- * Siguiente numero de comprobante (ultimo + 1).
59
+ * Solicita un CAEA para `periodo` (AAAAMM) y `orden` (1: días 1-15, 2: 16
60
+ * a fin de mes). Lanza `ArcaServiceError` si ARCA lo rechaza. Si lanza
61
+ * `ArcaSoapError` con `uncertain`, consultá `consultarCAEAEntreFechas()`.
66
62
  */
67
- siguienteComprobante(ptoVta: number, cbteTipo: number): Promise<number>;
63
+ solicitarCAEA(periodo: number, orden: number, opts?: CallOptions): Promise<MtxcaCAEA>;
64
+ /** Consulta un CAEA otorgado. */
65
+ consultarCAEA(caea: string, opts?: CallOptions): Promise<MtxcaCAEA>;
66
+ /** CAEAs otorgados entre dos fechas. */
67
+ consultarCAEAEntreFechas(fechaDesde: FechaInput, fechaHasta: FechaInput, opts?: CallOptions): Promise<MtxcaCAEA[]>;
68
68
  /**
69
- * Consulta un comprobante previamente autorizado.
69
+ * Informa un comprobante emitido con CAEA (`informarComprobanteCAEA`). Valida
70
+ * el XSD y las reglas excluyentes de ítems. Un rechazo devuelve
71
+ * `resultado: 'R'`. Ante `uncertain`, verificá con `consultarComprobante()`.
70
72
  */
71
- consultarComprobante(cbteTipo: number, ptoVta: number, cbteNro: number): Promise<MtxcaComprobante>;
73
+ informarComprobanteCAEA(comprobante: MtxcaComprobanteCAEA, opts?: CallOptions): Promise<MtxcaInformarCAEAResult>;
74
+ /** Informa un ajuste de IVA emitido con CAEA (`informarAjusteIVACAEA`). Solo valida el XSD. */
75
+ informarAjusteIVACAEA(comprobante: MtxcaComprobanteCAEA, opts?: CallOptions): Promise<MtxcaInformarCAEAResult>;
76
+ /** Informa que un CAEA no se utilizó. Un rechazo devuelve `resultado: 'R'`. */
77
+ informarCAEANoUtilizado(caea: string, opts?: CallOptions): Promise<MtxcaCAEANoUtilizadoResult>;
78
+ /** Informa que un CAEA no se utilizó en un punto de venta. Un rechazo devuelve `resultado: 'R'`. */
79
+ informarCAEANoUtilizadoPtoVta(caea: string, ptoVta: number, opts?: CallOptions): Promise<MtxcaCAEANoUtilizadoResult>;
80
+ /** Puntos de venta que todavía no informaron movimientos para un CAEA. */
81
+ consultarPtosVtaCAEANoInformados(caea: string, opts?: CallOptions): Promise<PuntoVenta[]>;
82
+ /** Estado del servicio (`dummy`). No requiere autenticación. */
83
+ status(opts?: CallOptions): Promise<ServerStatus>;
84
+ getTiposComprobante(opts?: CallOptions): Promise<CodigoDescripcion[]>;
85
+ getTiposDocumento(opts?: CallOptions): Promise<CodigoDescripcion[]>;
86
+ getAlicuotasIVA(opts?: CallOptions): Promise<CodigoDescripcion[]>;
87
+ /** Condiciones de IVA de los ítems. */
88
+ getCondicionesIVA(opts?: CallOptions): Promise<CodigoDescripcion[]>;
89
+ /** Condiciones de IVA del receptor admitidas para un tipo de comprobante (RG 5616). */
90
+ getCondicionesIVAReceptor(cbteTipo: number, opts?: CallOptions): Promise<CodigoDescripcion[]>;
91
+ getMonedas(opts?: CallOptions): Promise<CodigoDescripcionString[]>;
72
92
  /**
73
- * Health check del servicio WSMTXCA. No requiere autenticacion.
93
+ * Cotización de una moneda para una fecha (default: hoy en Argentina).
94
+ * `cotizacion` es `null` si ARCA no tiene cotización.
74
95
  */
75
- status(): Promise<ServerStatus>;
76
- /** Tipos de comprobante disponibles. */
77
- getTiposComprobante(): Promise<ParamItem[]>;
78
- /** Tipos de documento disponibles. */
79
- getTiposDocumento(): Promise<ParamItem[]>;
80
- /** Alicuotas de IVA disponibles. */
81
- getAlicuotasIVA(): Promise<ParamItem[]>;
82
- /** Condiciones de IVA disponibles. */
83
- getCondicionesIVA(): Promise<ParamItem[]>;
84
- /** Monedas disponibles. */
85
- getMonedas(): Promise<MonedaItem[]>;
86
- /** Unidades de medida disponibles. */
87
- getUnidadesMedida(): Promise<UnidadMedidaItem[]>;
88
- /** Puntos de venta habilitados. */
89
- getPuntosVenta(): Promise<PtoVentaItem[]>;
90
- /** Puntos de venta habilitados para CAE. */
91
- getPuntosVentaCAE(): Promise<PtoVentaItem[]>;
92
- /** Puntos de venta habilitados para CAEA. */
93
- getPuntosVentaCAEA(): Promise<PtoVentaItem[]>;
94
- /** Cotizacion de una moneda. */
95
- getCotizacionMoneda(monedaId: string): Promise<CotizacionResult>;
96
- /** Invalida el ticket de acceso cacheado. */
97
- clearAuthCache(): void;
96
+ getCotizacionMoneda(codigoMoneda: string, fecha?: FechaInput, opts?: CallOptions): Promise<CotizacionResult>;
97
+ getUnidadesMedida(opts?: CallOptions): Promise<CodigoDescripcion[]>;
98
+ getTiposTributo(opts?: CallOptions): Promise<CodigoDescripcion[]>;
99
+ getTiposDatosAdicionales(opts?: CallOptions): Promise<CodigoDescripcion[]>;
100
+ getActividadesVigentes(opts?: CallOptions): Promise<ActividadVigente[]>;
101
+ getPuntosVenta(opts?: CallOptions): Promise<PuntoVenta[]>;
102
+ getPuntosVentaCAE(opts?: CallOptions): Promise<PuntoVenta[]>;
103
+ getPuntosVentaCAEA(opts?: CallOptions): Promise<PuntoVenta[]>;
104
+ /** Descarta el ticket de acceso de WSMTXCA (memoria y `ticketStorage`). */
105
+ clearAuthCache(): Promise<void>;
98
106
  }
99
107
  //# sourceMappingURL=arca-mtxca.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arca-mtxca.d.ts","sourceRoot":"","sources":["../src/arca-mtxca.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAa,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EACV,eAAe,EAEf,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBAAa,SAAS;IACpB,8CAA8C;IAC9C,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,oDAAoD;IACpD,SAAgB,MAAM,EAAE,WAAW,CAAC;IAEpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA6B;gBAE1C,MAAM,EAAE,eAAe;YAgCrB,OAAO;IAarB;;;OAGG;IACG,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMvE;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1E;;OAEG;IACG,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7E;;OAEG;IACG,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC;IAS5B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAQrC,wCAAwC;IAClC,mBAAmB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAKjD,sCAAsC;IAChC,iBAAiB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAK/C,oCAAoC;IAC9B,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAK7C,sCAAsC;IAChC,iBAAiB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAK/C,2BAA2B;IACrB,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAKzC,sCAAsC;IAChC,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAKtD,mCAAmC;IAC7B,cAAc,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAK/C,4CAA4C;IACtC,iBAAiB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAKlD,6CAA6C;IACvC,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAKnD,gCAAgC;IAC1B,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAStE,6CAA6C;IAC7C,cAAc,IAAI,IAAI;CAGvB"}
1
+ {"version":3,"file":"arca-mtxca.d.ts","sourceRoot":"","sources":["../src/arca-mtxca.ts"],"names":[],"mappings":"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"}
@@ -1,191 +1,247 @@
1
- import { WsaaClient } from '@ramiidv/arca-common';
2
- import { MTXCA_SERVICE_ID } from './constants.js';
1
+ import { ArcaServiceError, formatDate, validateCuit, WsaaClient } from '@ramiidv/arca-common';
2
+ import { MTXCA_ENDPOINTS, MTXCA_SERVICE_ID } from './constants.js';
3
3
  import { MtxcaClient } from './mtxca-client.js';
4
- import { validateAutorizarRequest } from './validation.js';
4
+ import { buildComprobante } from './serialize.js';
5
+ import { validateComprobanteCAE, validateComprobanteCAEA } from './validation.js';
6
+ /** Error 1502 de consultarUltimoComprobanteAutorizado: no hay comprobantes para ese punto de venta y tipo. */
7
+ const SIN_COMPROBANTES = 1502;
5
8
  /**
6
- * Main orchestrator class for the WSMTXCA web service.
7
- *
8
- * Provides high-level methods that handle WSAA authentication automatically.
9
- * WSMTXCA is used for electronic invoicing WITH item-level detail (barcodes,
10
- * quantities, unit prices, product descriptions per line).
9
+ * Cliente de alto nivel de WSMTXCA (factura electrónica con detalle de
10
+ * ítems): autenticación WSAA automática, numeración y validación local.
11
11
  *
12
12
  * @example
13
13
  * ```ts
14
- * import { ArcaMtxca, CbteTipo, CodigoCondicionIVA } from '@ramiidv/arca-mtxca';
15
- * import { readFileSync } from 'fs';
16
- *
17
- * const mtxca = new ArcaMtxca({
18
- * cert: readFileSync('cert.pem', 'utf-8'),
19
- * key: readFileSync('key.pem', 'utf-8'),
20
- * cuit: 20123456789,
21
- * production: false,
22
- * });
23
- *
24
- * const result = await mtxca.autorizar({
25
- * ptoVta: 1,
26
- * cbteTipo: CbteTipo.FACTURA_B,
27
- * invoice: {
28
- * concepto: 1,
29
- * docTipo: 99,
30
- * docNro: 0,
31
- * cbteFch: '2026-03-31',
32
- * importeTotal: 121,
33
- * items: [{
34
- * descripcion: 'Producto de ejemplo',
35
- * cantidad: 1,
36
- * unidadMedida: 7,
37
- * precioUnitario: 100,
38
- * importeItem: 100,
39
- * codigoCondicionIVA: CodigoCondicionIVA.IVA_21,
40
- * importeIVA: 21,
41
- * }],
42
- * },
43
- * });
14
+ * const mtxca = new ArcaMtxca({ cert, key, cuit: '20123456786' });
15
+ * const res = await mtxca.autorizar({ ...comprobante });
16
+ * if (res.resultado === 'R') console.error(res.errores);
17
+ * else console.log(res.comprobante.cae);
44
18
  * ```
45
19
  */
46
20
  export class ArcaMtxca {
47
- /** Low-level WSAA client for direct access */
21
+ /** Cliente WSAA (acceso directo). */
48
22
  wsaa;
49
- /** Low-level MTXCA SOAP client for direct access */
23
+ /** Cliente SOAP de bajo nivel (acceso directo). */
50
24
  client;
25
+ /** CUIT representada, normalizada a 11 dígitos. */
51
26
  cuit;
52
- onEvent;
53
27
  constructor(config) {
54
- const isProduction = config.production ?? false;
55
- this.cuit = config.cuit;
56
- this.onEvent = config.onEvent;
57
- const soapOptions = {
58
- timeout: config.timeout,
59
- retries: config.retries,
60
- retryDelayMs: config.retryDelayMs,
61
- };
28
+ this.cuit = validateCuit(config.cuit);
29
+ const production = config.production ?? false;
62
30
  this.wsaa = new WsaaClient({
63
31
  cert: config.cert,
64
32
  key: config.key,
65
- production: isProduction,
33
+ production,
34
+ endpoint: config.wsaaEndpoint,
35
+ tokenTTLMinutes: config.tokenTTLMinutes,
66
36
  timeout: config.timeout,
67
37
  retries: config.retries,
68
38
  retryDelayMs: config.retryDelayMs,
69
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,
70
46
  });
71
47
  this.client = new MtxcaClient({
72
- production: isProduction,
73
- soapOptions,
48
+ endpoint: config.endpoint ?? (production ? MTXCA_ENDPOINTS.production : MTXCA_ENDPOINTS.testing),
49
+ timeout: config.timeout,
50
+ retries: config.retries,
51
+ retryDelayMs: config.retryDelayMs,
74
52
  onEvent: config.onEvent,
53
+ fetch: config.fetch,
54
+ legacyTls: config.legacyTls,
75
55
  });
76
56
  }
77
- // =========================================================================
78
- // Auth helper
79
- // =========================================================================
80
- async getAuth() {
81
- const ticket = await this.wsaa.getAccessTicket(MTXCA_SERVICE_ID);
82
- return {
83
- Token: ticket.token,
84
- Sign: ticket.sign,
85
- Cuit: this.cuit,
86
- };
57
+ async auth(opts) {
58
+ const ticket = await this.wsaa.getAccessTicket(MTXCA_SERVICE_ID, opts);
59
+ return { token: ticket.token, sign: ticket.sign, cuitRepresentada: this.cuit };
87
60
  }
88
61
  // =========================================================================
89
- // Facturacion
62
+ // CAE
90
63
  // =========================================================================
91
64
  /**
92
- * Autoriza un comprobante con detalle de articulos.
93
- * Obtiene automaticamente el numero de comprobante siguiente.
65
+ * Autoriza un comprobante con detalle de ítems (`autorizarComprobante`).
66
+ *
67
+ * - Valida contra el XSD, redondea importes y (salvo `validarImportes: false`)
68
+ * valida la coherencia de importes según el manual.
69
+ * - Sin `numeroComprobante`, usa el último autorizado + 1. Las solicitudes
70
+ * para un mismo punto de venta y tipo deben ser secuenciales (error 135).
71
+ * - Un rechazo devuelve `resultado: 'R'` con `errores`; `O` es aprobado con
72
+ * observaciones.
73
+ * - Si lanza `ArcaSoapError` con `uncertain: true`, el comprobante pudo
74
+ * haberse autorizado: NO reintentes a ciegas; usá `ultimoComprobante()` y
75
+ * `consultarComprobante()` para saber si quedó autorizado.
94
76
  */
95
- async autorizar(request) {
96
- validateAutorizarRequest(request);
97
- const auth = await this.getAuth();
98
- return this.client.autorizarComprobante(auth, request);
77
+ async autorizar(request, opts) {
78
+ return this.autorizarCAE('autorizarComprobante', request, opts);
99
79
  }
100
80
  /**
101
- * Ultimo numero de comprobante autorizado para un punto de venta y tipo.
81
+ * Autoriza un ajuste de IVA (`autorizarAjusteIVA`, ND/NC 2, 3, 7, 8, 52, 53).
82
+ * Tiene reglas propias (ej. importeSubtotal 0, sin gravado/no gravado/exento),
83
+ * así que solo se valida contra el XSD. Misma numeración y manejo de errores
84
+ * que `autorizar()`.
102
85
  */
103
- async ultimoComprobante(ptoVta, cbteTipo) {
104
- const auth = await this.getAuth();
105
- return this.client.consultarUltimoComprobanteAutorizado(auth, ptoVta, cbteTipo);
86
+ async autorizarAjusteIVA(request, opts) {
87
+ return this.autorizarCAE('autorizarAjusteIVA', request, { ...opts, validarImportes: false });
88
+ }
89
+ async autorizarCAE(method, request, opts) {
90
+ // 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);
94
+ const numeroComprobante = request.numeroComprobante ??
95
+ (await this.siguienteComprobante(request.numeroPuntoVenta, request.codigoTipoComprobante, opts));
96
+ const auth = await this.auth(opts);
97
+ const comprobante = { ...request, numeroComprobante };
98
+ return method === 'autorizarComprobante'
99
+ ? this.client.autorizarComprobante(auth, comprobante, opts)
100
+ : this.client.autorizarAjusteIVA(auth, comprobante, opts);
106
101
  }
107
102
  /**
108
- * Siguiente numero de comprobante (ultimo + 1).
103
+ * Último número autorizado o informado para un punto de venta y tipo. Si no
104
+ * hay ninguno (error 1502 de ARCA), devuelve 0. Cualquier otro error lanza
105
+ * `ArcaServiceError`.
109
106
  */
110
- async siguienteComprobante(ptoVta, cbteTipo) {
111
- const ultimo = await this.ultimoComprobante(ptoVta, cbteTipo);
112
- return ultimo + 1;
107
+ async ultimoComprobante(ptoVta, cbteTipo, opts) {
108
+ const auth = await this.auth(opts);
109
+ try {
110
+ return await this.client.consultarUltimoComprobanteAutorizado(auth, ptoVta, cbteTipo, opts);
111
+ }
112
+ catch (e) {
113
+ if (e instanceof ArcaServiceError && e.errors.length > 0 && e.errors.every((x) => x.code === SIN_COMPROBANTES)) {
114
+ return 0;
115
+ }
116
+ throw e;
117
+ }
118
+ }
119
+ /** Siguiente número de comprobante (último + 1). */
120
+ async siguienteComprobante(ptoVta, cbteTipo, opts) {
121
+ return (await this.ultimoComprobante(ptoVta, cbteTipo, opts)) + 1;
122
+ }
123
+ /** Consulta un comprobante autorizado (CAE) o informado (CAEA). Lanza `ArcaServiceError` si no existe. */
124
+ async consultarComprobante(cbteTipo, ptoVta, cbteNro, opts) {
125
+ const auth = await this.auth(opts);
126
+ return this.client.consultarComprobante(auth, cbteTipo, ptoVta, cbteNro, opts);
113
127
  }
128
+ // =========================================================================
129
+ // CAEA
130
+ // =========================================================================
114
131
  /**
115
- * Consulta un comprobante previamente autorizado.
132
+ * Solicita un CAEA para `periodo` (AAAAMM) y `orden` (1: días 1-15, 2: 16
133
+ * a fin de mes). Lanza `ArcaServiceError` si ARCA lo rechaza. Si lanza
134
+ * `ArcaSoapError` con `uncertain`, consultá `consultarCAEAEntreFechas()`.
116
135
  */
117
- async consultarComprobante(cbteTipo, ptoVta, cbteNro) {
118
- const auth = await this.getAuth();
119
- return this.client.consultarComprobante(auth, cbteTipo, ptoVta, cbteNro);
136
+ async solicitarCAEA(periodo, orden, opts) {
137
+ const auth = await this.auth(opts);
138
+ return this.client.solicitarCAEA(auth, periodo, orden, opts);
139
+ }
140
+ /** Consulta un CAEA otorgado. */
141
+ async consultarCAEA(caea, opts) {
142
+ const auth = await this.auth(opts);
143
+ return this.client.consultarCAEA(auth, caea, opts);
144
+ }
145
+ /** CAEAs otorgados entre dos fechas. */
146
+ async consultarCAEAEntreFechas(fechaDesde, fechaHasta, opts) {
147
+ const auth = await this.auth(opts);
148
+ return this.client.consultarCAEAEntreFechas(auth, fechaDesde, fechaHasta, opts);
120
149
  }
121
- // =========================================================================
122
- // Estado del servicio
123
- // =========================================================================
124
150
  /**
125
- * Health check del servicio WSMTXCA. No requiere autenticacion.
151
+ * Informa un comprobante emitido con CAEA (`informarComprobanteCAEA`). Valida
152
+ * el XSD y las reglas excluyentes de ítems. Un rechazo devuelve
153
+ * `resultado: 'R'`. Ante `uncertain`, verificá con `consultarComprobante()`.
126
154
  */
127
- async status() {
128
- return this.client.dummy();
155
+ async informarComprobanteCAEA(comprobante, opts) {
156
+ buildComprobante(comprobante, 'caea');
157
+ validateComprobanteCAEA(comprobante);
158
+ const auth = await this.auth(opts);
159
+ return this.client.informarComprobanteCAEA(auth, comprobante, opts);
160
+ }
161
+ /** Informa un ajuste de IVA emitido con CAEA (`informarAjusteIVACAEA`). Solo valida el XSD. */
162
+ async informarAjusteIVACAEA(comprobante, opts) {
163
+ const auth = await this.auth(opts);
164
+ return this.client.informarAjusteIVACAEA(auth, comprobante, opts);
165
+ }
166
+ /** Informa que un CAEA no se utilizó. Un rechazo devuelve `resultado: 'R'`. */
167
+ async informarCAEANoUtilizado(caea, opts) {
168
+ const auth = await this.auth(opts);
169
+ return this.client.informarCAEANoUtilizado(auth, caea, opts);
170
+ }
171
+ /** Informa que un CAEA no se utilizó en un punto de venta. Un rechazo devuelve `resultado: 'R'`. */
172
+ async informarCAEANoUtilizadoPtoVta(caea, ptoVta, opts) {
173
+ const auth = await this.auth(opts);
174
+ return this.client.informarCAEANoUtilizadoPtoVta(auth, caea, ptoVta, opts);
175
+ }
176
+ /** Puntos de venta que todavía no informaron movimientos para un CAEA. */
177
+ async consultarPtosVtaCAEANoInformados(caea, opts) {
178
+ const auth = await this.auth(opts);
179
+ return this.client.consultarPtosVtaCAEANoInformados(auth, caea, opts);
129
180
  }
130
181
  // =========================================================================
131
- // Parametros
182
+ // Estado
132
183
  // =========================================================================
133
- /** Tipos de comprobante disponibles. */
134
- async getTiposComprobante() {
135
- const auth = await this.getAuth();
136
- return this.client.consultarTiposComprobante(auth);
137
- }
138
- /** Tipos de documento disponibles. */
139
- async getTiposDocumento() {
140
- const auth = await this.getAuth();
141
- return this.client.consultarTiposDocumento(auth);
142
- }
143
- /** Alicuotas de IVA disponibles. */
144
- async getAlicuotasIVA() {
145
- const auth = await this.getAuth();
146
- return this.client.consultarAlicuotasIVA(auth);
147
- }
148
- /** Condiciones de IVA disponibles. */
149
- async getCondicionesIVA() {
150
- const auth = await this.getAuth();
151
- return this.client.consultarCondicionesIVA(auth);
152
- }
153
- /** Monedas disponibles. */
154
- async getMonedas() {
155
- const auth = await this.getAuth();
156
- return this.client.consultarMonedas(auth);
157
- }
158
- /** Unidades de medida disponibles. */
159
- async getUnidadesMedida() {
160
- const auth = await this.getAuth();
161
- return this.client.consultarUnidadesMedida(auth);
162
- }
163
- /** Puntos de venta habilitados. */
164
- async getPuntosVenta() {
165
- const auth = await this.getAuth();
166
- return this.client.consultarPuntosVenta(auth);
167
- }
168
- /** Puntos de venta habilitados para CAE. */
169
- async getPuntosVentaCAE() {
170
- const auth = await this.getAuth();
171
- return this.client.consultarPuntosVentaCAE(auth);
172
- }
173
- /** Puntos de venta habilitados para CAEA. */
174
- async getPuntosVentaCAEA() {
175
- const auth = await this.getAuth();
176
- return this.client.consultarPuntosVentaCAEA(auth);
177
- }
178
- /** Cotizacion de una moneda. */
179
- async getCotizacionMoneda(monedaId) {
180
- const auth = await this.getAuth();
181
- return this.client.consultarCotizacionMoneda(auth, monedaId);
184
+ /** Estado del servicio (`dummy`). No requiere autenticación. */
185
+ async status(opts) {
186
+ return this.client.dummy(opts);
187
+ }
188
+ // =========================================================================
189
+ // Parámetros
190
+ // =========================================================================
191
+ async getTiposComprobante(opts) {
192
+ return this.client.consultarTiposComprobante(await this.auth(opts), opts);
193
+ }
194
+ async getTiposDocumento(opts) {
195
+ return this.client.consultarTiposDocumento(await this.auth(opts), opts);
196
+ }
197
+ async getAlicuotasIVA(opts) {
198
+ return this.client.consultarAlicuotasIVA(await this.auth(opts), opts);
199
+ }
200
+ /** Condiciones de IVA de los ítems. */
201
+ async getCondicionesIVA(opts) {
202
+ return this.client.consultarCondicionesIVA(await this.auth(opts), opts);
203
+ }
204
+ /** Condiciones de IVA del receptor admitidas para un tipo de comprobante (RG 5616). */
205
+ async getCondicionesIVAReceptor(cbteTipo, opts) {
206
+ return this.client.consultarCondicionesIVAReceptor(await this.auth(opts), cbteTipo, opts);
207
+ }
208
+ async getMonedas(opts) {
209
+ return this.client.consultarMonedas(await this.auth(opts), opts);
210
+ }
211
+ /**
212
+ * Cotización de una moneda para una fecha (default: hoy en Argentina).
213
+ * `cotizacion` es `null` si ARCA no tiene cotización.
214
+ */
215
+ async getCotizacionMoneda(codigoMoneda, fecha = formatDate(new Date()), opts) {
216
+ return this.client.consultarCotizacionMoneda(await this.auth(opts), codigoMoneda, fecha, opts);
217
+ }
218
+ async getUnidadesMedida(opts) {
219
+ return this.client.consultarUnidadesMedida(await this.auth(opts), opts);
220
+ }
221
+ async getTiposTributo(opts) {
222
+ return this.client.consultarTiposTributo(await this.auth(opts), opts);
223
+ }
224
+ async getTiposDatosAdicionales(opts) {
225
+ return this.client.consultarTiposDatosAdicionales(await this.auth(opts), opts);
226
+ }
227
+ async getActividadesVigentes(opts) {
228
+ return this.client.consultarActividadesVigentes(await this.auth(opts), opts);
229
+ }
230
+ async getPuntosVenta(opts) {
231
+ return this.client.consultarPuntosVenta(await this.auth(opts), opts);
232
+ }
233
+ async getPuntosVentaCAE(opts) {
234
+ return this.client.consultarPuntosVentaCAE(await this.auth(opts), opts);
235
+ }
236
+ async getPuntosVentaCAEA(opts) {
237
+ return this.client.consultarPuntosVentaCAEA(await this.auth(opts), opts);
182
238
  }
183
239
  // =========================================================================
184
- // Cache management
240
+ // Cache
185
241
  // =========================================================================
186
- /** Invalida el ticket de acceso cacheado. */
187
- clearAuthCache() {
188
- this.wsaa.clearTicket(MTXCA_SERVICE_ID);
242
+ /** Descarta el ticket de acceso de WSMTXCA (memoria y `ticketStorage`). */
243
+ async clearAuthCache() {
244
+ await this.wsaa.clearTicket(MTXCA_SERVICE_ID);
189
245
  }
190
246
  }
191
247
  //# sourceMappingURL=arca-mtxca.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arca-mtxca.js","sourceRoot":"","sources":["../src/arca-mtxca.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAc3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,OAAO,SAAS;IACpB,8CAA8C;IAC9B,IAAI,CAAa;IACjC,oDAAoD;IACpC,MAAM,CAAc;IAEnB,IAAI,CAAS;IACb,OAAO,CAA8B;IAEtD,YAAY,MAAuB;QACjC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE9B,MAAM,WAAW,GAAkE;YACjF,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,UAAU,EAAE,YAAY;YACxB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC;YAC5B,UAAU,EAAE,YAAY;YACxB,WAAW;YACX,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAEpE,KAAK,CAAC,OAAO;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QACjE,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,OAAyB;QACvC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,QAAgB;QACtD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,oCAAoC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,QAAgB;QACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9D,OAAO,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CACxB,QAAgB,EAChB,MAAc,EACd,OAAe;QAEf,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,4EAA4E;IAC5E,sBAAsB;IACtB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E,wCAAwC;IACxC,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,oCAAoC;IACpC,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,kBAAkB;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QACxC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,4EAA4E;IAC5E,mBAAmB;IACnB,4EAA4E;IAE5E,6CAA6C;IAC7C,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC1C,CAAC;CACF"}
1
+ {"version":3,"file":"arca-mtxca.js","sourceRoot":"","sources":["../src/arca-mtxca.ts"],"names":[],"mappings":"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"}