@ramiidv/arca-sdk 0.1.0 → 0.2.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/README.md +251 -136
- package/dist/arca.d.ts +88 -2
- package/dist/arca.d.ts.map +1 -1
- package/dist/arca.js +138 -5
- package/dist/arca.js.map +1 -1
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +36 -0
- package/dist/constants.js.map +1 -1
- package/dist/errors.d.ts +35 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +44 -0
- package/dist/errors.js.map +1 -0
- package/dist/facturacion.d.ts +39 -0
- package/dist/facturacion.d.ts.map +1 -0
- package/dist/facturacion.js +189 -0
- package/dist/facturacion.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/soap-client.d.ts +2 -2
- package/dist/soap-client.d.ts.map +1 -1
- package/dist/soap-client.js +29 -13
- package/dist/soap-client.js.map +1 -1
- package/dist/types.d.ts +96 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wsaa.d.ts +5 -0
- package/dist/wsaa.d.ts.map +1 -1
- package/dist/wsaa.js +28 -7
- package/dist/wsaa.js.map +1 -1
- package/dist/wsfe.d.ts +6 -1
- package/dist/wsfe.d.ts.map +1 -1
- package/dist/wsfe.js +28 -16
- package/dist/wsfe.js.map +1 -1
- package/package.json +1 -1
package/dist/arca.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { WsaaClient } from "./wsaa.js";
|
|
2
2
|
import { WsfeClient } from "./wsfe.js";
|
|
3
|
+
import { buildInvoiceDetail, parseFacturaResult, toDateString, calcularTotales, } from "./facturacion.js";
|
|
4
|
+
import { ArcaError } from "./errors.js";
|
|
5
|
+
import { NOTA_CREDITO_MAP, NOTA_DEBITO_MAP, } from "./constants.js";
|
|
3
6
|
export class Arca {
|
|
4
7
|
wsaa;
|
|
5
8
|
wsfe;
|
|
@@ -8,13 +11,15 @@ export class Arca {
|
|
|
8
11
|
constructor(config) {
|
|
9
12
|
this.cuit = config.cuit;
|
|
10
13
|
this.production = config.production ?? false;
|
|
14
|
+
const timeoutMs = config.requestTimeoutMs ?? 30_000;
|
|
11
15
|
this.wsaa = new WsaaClient({
|
|
12
16
|
cert: config.cert,
|
|
13
17
|
key: config.key,
|
|
14
18
|
production: this.production,
|
|
15
19
|
tokenTTLMinutes: config.tokenTTLMinutes ?? 720,
|
|
20
|
+
timeoutMs,
|
|
16
21
|
});
|
|
17
|
-
this.wsfe = new WsfeClient(this.production);
|
|
22
|
+
this.wsfe = new WsfeClient(this.production, timeoutMs);
|
|
18
23
|
}
|
|
19
24
|
// ============================================================
|
|
20
25
|
// Auth helpers
|
|
@@ -98,6 +103,115 @@ export class Arca {
|
|
|
98
103
|
],
|
|
99
104
|
});
|
|
100
105
|
}
|
|
106
|
+
// ============================================================
|
|
107
|
+
// Facturación - API Simplificada
|
|
108
|
+
// ============================================================
|
|
109
|
+
/**
|
|
110
|
+
* Crea una factura con API simplificada.
|
|
111
|
+
* Calcula automáticamente IVA, totales, y número de comprobante.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```ts
|
|
115
|
+
* const result = await arca.facturar({
|
|
116
|
+
* ptoVta: 1,
|
|
117
|
+
* cbteTipo: CbteTipo.FACTURA_B,
|
|
118
|
+
* items: [
|
|
119
|
+
* { neto: 1000, iva: IvaTipo.IVA_21 },
|
|
120
|
+
* { neto: 500, iva: IvaTipo.IVA_10_5 },
|
|
121
|
+
* ],
|
|
122
|
+
* });
|
|
123
|
+
*
|
|
124
|
+
* if (result.aprobada) {
|
|
125
|
+
* console.log(`CAE: ${result.cae}, Cbte: ${result.cbteNro}`);
|
|
126
|
+
* }
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
async facturar(opts) {
|
|
130
|
+
const nextNum = await this.siguienteComprobante(opts.ptoVta, opts.cbteTipo);
|
|
131
|
+
const { detail, importes } = buildInvoiceDetail(opts, nextNum);
|
|
132
|
+
const result = await this.crearFactura({
|
|
133
|
+
PtoVta: opts.ptoVta,
|
|
134
|
+
CbteTipo: opts.cbteTipo,
|
|
135
|
+
invoices: [detail],
|
|
136
|
+
});
|
|
137
|
+
return parseFacturaResult(result, importes);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Crea una nota de crédito asociada a un comprobante original.
|
|
141
|
+
* El tipo de NC se infiere automáticamente del tipo del comprobante original.
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```ts
|
|
145
|
+
* const result = await arca.notaCredito({
|
|
146
|
+
* ptoVta: 1,
|
|
147
|
+
* comprobanteOriginal: {
|
|
148
|
+
* tipo: CbteTipo.FACTURA_B,
|
|
149
|
+
* ptoVta: 1,
|
|
150
|
+
* nro: 5,
|
|
151
|
+
* },
|
|
152
|
+
* items: [{ neto: 500, iva: IvaTipo.IVA_21 }],
|
|
153
|
+
* });
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
async notaCredito(opts) {
|
|
157
|
+
const cbteTipo = NOTA_CREDITO_MAP[opts.comprobanteOriginal.tipo];
|
|
158
|
+
if (cbteTipo === undefined) {
|
|
159
|
+
throw new ArcaError(`No se puede inferir el tipo de Nota de Crédito para CbteTipo ${opts.comprobanteOriginal.tipo}`);
|
|
160
|
+
}
|
|
161
|
+
return this.facturarConAsociado(cbteTipo, opts);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Crea una nota de débito asociada a un comprobante original.
|
|
165
|
+
* El tipo de ND se infiere automáticamente del tipo del comprobante original.
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```ts
|
|
169
|
+
* const result = await arca.notaDebito({
|
|
170
|
+
* ptoVta: 1,
|
|
171
|
+
* comprobanteOriginal: {
|
|
172
|
+
* tipo: CbteTipo.FACTURA_A,
|
|
173
|
+
* ptoVta: 1,
|
|
174
|
+
* nro: 10,
|
|
175
|
+
* fecha: "20260301",
|
|
176
|
+
* },
|
|
177
|
+
* docTipo: DocTipo.CUIT,
|
|
178
|
+
* docNro: 20123456789,
|
|
179
|
+
* items: [{ neto: 200, iva: IvaTipo.IVA_21 }],
|
|
180
|
+
* });
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
async notaDebito(opts) {
|
|
184
|
+
const cbteTipo = NOTA_DEBITO_MAP[opts.comprobanteOriginal.tipo];
|
|
185
|
+
if (cbteTipo === undefined) {
|
|
186
|
+
throw new ArcaError(`No se puede inferir el tipo de Nota de Débito para CbteTipo ${opts.comprobanteOriginal.tipo}`);
|
|
187
|
+
}
|
|
188
|
+
return this.facturarConAsociado(cbteTipo, opts);
|
|
189
|
+
}
|
|
190
|
+
async facturarConAsociado(cbteTipo, opts) {
|
|
191
|
+
const orig = opts.comprobanteOriginal;
|
|
192
|
+
const fullOpts = {
|
|
193
|
+
...opts,
|
|
194
|
+
cbteTipo,
|
|
195
|
+
};
|
|
196
|
+
const nextNum = await this.siguienteComprobante(opts.ptoVta, cbteTipo);
|
|
197
|
+
const { detail, importes } = buildInvoiceDetail(fullOpts, nextNum);
|
|
198
|
+
// Agregar comprobante asociado
|
|
199
|
+
detail.CbtesAsoc = [
|
|
200
|
+
{
|
|
201
|
+
Tipo: orig.tipo,
|
|
202
|
+
PtoVta: orig.ptoVta,
|
|
203
|
+
Nro: orig.nro,
|
|
204
|
+
...(orig.cuit !== undefined && { Cuit: orig.cuit }),
|
|
205
|
+
...(orig.fecha !== undefined && { CbteFch: toDateString(orig.fecha) }),
|
|
206
|
+
},
|
|
207
|
+
];
|
|
208
|
+
const result = await this.crearFactura({
|
|
209
|
+
PtoVta: opts.ptoVta,
|
|
210
|
+
CbteTipo: cbteTipo,
|
|
211
|
+
invoices: [detail],
|
|
212
|
+
});
|
|
213
|
+
return parseFacturaResult(result, importes);
|
|
214
|
+
}
|
|
101
215
|
/**
|
|
102
216
|
* Consulta un comprobante previamente autorizado.
|
|
103
217
|
*/
|
|
@@ -120,6 +234,11 @@ export class Arca {
|
|
|
120
234
|
const auth = await this.getAuth();
|
|
121
235
|
return this.wsfe.getTiposComprobante(auth);
|
|
122
236
|
}
|
|
237
|
+
/** Obtiene los tipos de concepto disponibles (Productos, Servicios, Productos y Servicios). */
|
|
238
|
+
async getTiposConcepto() {
|
|
239
|
+
const auth = await this.getAuth();
|
|
240
|
+
return this.wsfe.getTiposConcepto(auth);
|
|
241
|
+
}
|
|
123
242
|
/** Obtiene los tipos de documento disponibles. */
|
|
124
243
|
async getTiposDocumento() {
|
|
125
244
|
const auth = await this.getAuth();
|
|
@@ -182,12 +301,26 @@ export class Arca {
|
|
|
182
301
|
}
|
|
183
302
|
/**
|
|
184
303
|
* Formatea una fecha Date a formato YYYYMMDD requerido por ARCA.
|
|
304
|
+
* Usa timezone America/Argentina/Buenos_Aires.
|
|
185
305
|
*/
|
|
186
306
|
static formatDate(date) {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
307
|
+
return toDateString(date);
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Calcula los importes de una factura a partir de line items.
|
|
311
|
+
* Útil para previsualizar totales antes de enviar a ARCA.
|
|
312
|
+
*
|
|
313
|
+
* @example
|
|
314
|
+
* ```ts
|
|
315
|
+
* const { importes } = Arca.calcularTotales([
|
|
316
|
+
* { neto: 1000, iva: IvaTipo.IVA_21 },
|
|
317
|
+
* { neto: 500, iva: IvaTipo.IVA_10_5 },
|
|
318
|
+
* ]);
|
|
319
|
+
* console.log(importes.total); // 1762.5
|
|
320
|
+
* ```
|
|
321
|
+
*/
|
|
322
|
+
static calcularTotales(items, opts) {
|
|
323
|
+
return calcularTotales(items, opts);
|
|
191
324
|
}
|
|
192
325
|
/**
|
|
193
326
|
* Invalida los tickets de acceso cacheados.
|
package/dist/arca.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arca.js","sourceRoot":"","sources":["../src/arca.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"arca.js","sourceRoot":"","sources":["../src/arca.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -96,6 +96,9 @@ export declare enum Moneda {
|
|
|
96
96
|
DOLARES_CANADIENSES = "018",
|
|
97
97
|
YUANES = "064"
|
|
98
98
|
}
|
|
99
|
+
export declare const NOTA_CREDITO_MAP: Record<number, number>;
|
|
100
|
+
export declare const NOTA_DEBITO_MAP: Record<number, number>;
|
|
101
|
+
export declare function isTipoC(cbteTipo: number): boolean;
|
|
99
102
|
export declare enum TributoTipo {
|
|
100
103
|
IMPUESTOS_NACIONALES = 1,
|
|
101
104
|
IMPUESTOS_PROVINCIALES = 2,
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS;;;;;;;;;CASZ,CAAC;AAEX,eAAO,MAAM,cAAc,iCAAiC,CAAC;AAC7D,eAAO,MAAM,cAAc,gEACoC,CAAC;AAMhE,oBAAY,QAAQ;IAElB,SAAS,IAAI;IACb,aAAa,IAAI;IACjB,cAAc,IAAI;IAClB,QAAQ,IAAI;IACZ,oBAAoB,IAAI;IAGxB,SAAS,IAAI;IACb,aAAa,IAAI;IACjB,cAAc,IAAI;IAClB,QAAQ,IAAI;IACZ,oBAAoB,KAAK;IAGzB,SAAS,KAAK;IACd,aAAa,KAAK;IAClB,cAAc,KAAK;IACnB,QAAQ,KAAK;IAGb,SAAS,KAAK;IACd,aAAa,KAAK;IAClB,cAAc,KAAK;IAGnB,qBAAqB,KAAK;IAC1B,qBAAqB,KAAK;IAC1B,mBAAmB,KAAK;IACxB,mBAAmB,KAAK;IAGxB,oBAAoB,KAAK;IAGzB,SAAS,KAAK;IACd,aAAa,KAAK;IAClB,cAAc,KAAK;IACnB,QAAQ,KAAK;IAGb,kBAAkB,KAAK;IACvB,kBAAkB,KAAK;IAGvB,aAAa,KAAK;IAClB,aAAa,KAAK;IAGlB,aAAa,MAAM;IACnB,iBAAiB,MAAM;IACvB,kBAAkB,MAAM;IAGxB,aAAa,MAAM;IACnB,iBAAiB,MAAM;IACvB,kBAAkB,MAAM;IAGxB,aAAa,MAAM;IACnB,iBAAiB,MAAM;IACvB,kBAAkB,MAAM;CACzB;AAMD,oBAAY,QAAQ;IAClB,SAAS,IAAI;IACb,SAAS,IAAI;IACb,qBAAqB,IAAI;CAC1B;AAMD,oBAAY,OAAO;IACjB,IAAI,KAAK;IACT,IAAI,KAAK;IACT,GAAG,KAAK;IACR,EAAE,KAAK;IACP,EAAE,KAAK;IACP,aAAa,KAAK;IAClB,UAAU,KAAK;IACf,eAAe,KAAK;IACpB,SAAS,KAAK;IACd,YAAY,KAAK;IACjB,GAAG,KAAK;IACR,gBAAgB,KAAK;CACtB;AAMD,oBAAY,OAAO;IACjB,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,MAAM,IAAI;IACV,KAAK,IAAI;IACT,OAAO,IAAI;CACZ;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAO7C,CAAC;AAMF,oBAAY,MAAM;IAChB,KAAK,QAAQ;IACb,OAAO,QAAQ;IACf,KAAK,QAAQ;IACb,MAAM,QAAQ;IACd,eAAe,QAAQ;IACvB,cAAc,QAAQ;IACtB,SAAS,QAAQ;IACjB,UAAU,QAAQ;IAClB,iBAAiB,QAAQ;IACzB,eAAe,QAAQ;IACvB,iBAAiB,QAAQ;IACzB,KAAK,QAAQ;IACb,cAAc,QAAQ;IACtB,mBAAmB,QAAQ;IAC3B,MAAM,QAAQ;CACf;AAMD,oBAAY,WAAW;IACrB,oBAAoB,IAAI;IACxB,sBAAsB,IAAI;IAC1B,qBAAqB,IAAI;IACzB,kBAAkB,IAAI;IACtB,IAAI,IAAI;IACR,UAAU,IAAI;IACd,WAAW,IAAI;IACf,kBAAkB,IAAI;IACtB,kBAAkB,IAAI;IACtB,IAAI,KAAK;CACV"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS;;;;;;;;;CASZ,CAAC;AAEX,eAAO,MAAM,cAAc,iCAAiC,CAAC;AAC7D,eAAO,MAAM,cAAc,gEACoC,CAAC;AAMhE,oBAAY,QAAQ;IAElB,SAAS,IAAI;IACb,aAAa,IAAI;IACjB,cAAc,IAAI;IAClB,QAAQ,IAAI;IACZ,oBAAoB,IAAI;IAGxB,SAAS,IAAI;IACb,aAAa,IAAI;IACjB,cAAc,IAAI;IAClB,QAAQ,IAAI;IACZ,oBAAoB,KAAK;IAGzB,SAAS,KAAK;IACd,aAAa,KAAK;IAClB,cAAc,KAAK;IACnB,QAAQ,KAAK;IAGb,SAAS,KAAK;IACd,aAAa,KAAK;IAClB,cAAc,KAAK;IAGnB,qBAAqB,KAAK;IAC1B,qBAAqB,KAAK;IAC1B,mBAAmB,KAAK;IACxB,mBAAmB,KAAK;IAGxB,oBAAoB,KAAK;IAGzB,SAAS,KAAK;IACd,aAAa,KAAK;IAClB,cAAc,KAAK;IACnB,QAAQ,KAAK;IAGb,kBAAkB,KAAK;IACvB,kBAAkB,KAAK;IAGvB,aAAa,KAAK;IAClB,aAAa,KAAK;IAGlB,aAAa,MAAM;IACnB,iBAAiB,MAAM;IACvB,kBAAkB,MAAM;IAGxB,aAAa,MAAM;IACnB,iBAAiB,MAAM;IACvB,kBAAkB,MAAM;IAGxB,aAAa,MAAM;IACnB,iBAAiB,MAAM;IACvB,kBAAkB,MAAM;CACzB;AAMD,oBAAY,QAAQ;IAClB,SAAS,IAAI;IACb,SAAS,IAAI;IACb,qBAAqB,IAAI;CAC1B;AAMD,oBAAY,OAAO;IACjB,IAAI,KAAK;IACT,IAAI,KAAK;IACT,GAAG,KAAK;IACR,EAAE,KAAK;IACP,EAAE,KAAK;IACP,aAAa,KAAK;IAClB,UAAU,KAAK;IACf,eAAe,KAAK;IACpB,SAAS,KAAK;IACd,YAAY,KAAK;IACjB,GAAG,KAAK;IACR,gBAAgB,KAAK;CACtB;AAMD,oBAAY,OAAO;IACjB,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,MAAM,IAAI;IACV,KAAK,IAAI;IACT,OAAO,IAAI;CACZ;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAO7C,CAAC;AAMF,oBAAY,MAAM;IAChB,KAAK,QAAQ;IACb,OAAO,QAAQ;IACf,KAAK,QAAQ;IACb,MAAM,QAAQ;IACd,eAAe,QAAQ;IACvB,cAAc,QAAQ;IACtB,SAAS,QAAQ;IACjB,UAAU,QAAQ;IAClB,iBAAiB,QAAQ;IACzB,eAAe,QAAQ;IACvB,iBAAiB,QAAQ;IACzB,KAAK,QAAQ;IACb,cAAc,QAAQ;IACtB,mBAAmB,QAAQ;IAC3B,MAAM,QAAQ;CACf;AAMD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASnD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASlD,CAAC;AAaF,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEjD;AAMD,oBAAY,WAAW;IACrB,oBAAoB,IAAI;IACxB,sBAAsB,IAAI;IAC1B,qBAAqB,IAAI;IACzB,kBAAkB,IAAI;IACtB,IAAI,IAAI;IACR,UAAU,IAAI;IACd,WAAW,IAAI;IACf,kBAAkB,IAAI;IACtB,kBAAkB,IAAI;IACtB,IAAI,KAAK;CACV"}
|
package/dist/constants.js
CHANGED
|
@@ -139,6 +139,42 @@ export var Moneda;
|
|
|
139
139
|
Moneda["YUANES"] = "064";
|
|
140
140
|
})(Moneda || (Moneda = {}));
|
|
141
141
|
// ============================================================
|
|
142
|
+
// Mapeos de CbteTipo: Factura → Nota Crédito / Nota Débito
|
|
143
|
+
// ============================================================
|
|
144
|
+
export const NOTA_CREDITO_MAP = {
|
|
145
|
+
[CbteTipo.FACTURA_A]: CbteTipo.NOTA_CREDITO_A,
|
|
146
|
+
[CbteTipo.FACTURA_B]: CbteTipo.NOTA_CREDITO_B,
|
|
147
|
+
[CbteTipo.FACTURA_C]: CbteTipo.NOTA_CREDITO_C,
|
|
148
|
+
[CbteTipo.FACTURA_E]: CbteTipo.NOTA_CREDITO_E,
|
|
149
|
+
[CbteTipo.FACTURA_M]: CbteTipo.NOTA_CREDITO_M,
|
|
150
|
+
[CbteTipo.FCE_FACTURA_A]: CbteTipo.FCE_NOTA_CREDITO_A,
|
|
151
|
+
[CbteTipo.FCE_FACTURA_B]: CbteTipo.FCE_NOTA_CREDITO_B,
|
|
152
|
+
[CbteTipo.FCE_FACTURA_C]: CbteTipo.FCE_NOTA_CREDITO_C,
|
|
153
|
+
};
|
|
154
|
+
export const NOTA_DEBITO_MAP = {
|
|
155
|
+
[CbteTipo.FACTURA_A]: CbteTipo.NOTA_DEBITO_A,
|
|
156
|
+
[CbteTipo.FACTURA_B]: CbteTipo.NOTA_DEBITO_B,
|
|
157
|
+
[CbteTipo.FACTURA_C]: CbteTipo.NOTA_DEBITO_C,
|
|
158
|
+
[CbteTipo.FACTURA_E]: CbteTipo.NOTA_DEBITO_E,
|
|
159
|
+
[CbteTipo.FACTURA_M]: CbteTipo.NOTA_DEBITO_M,
|
|
160
|
+
[CbteTipo.FCE_FACTURA_A]: CbteTipo.FCE_NOTA_DEBITO_A,
|
|
161
|
+
[CbteTipo.FCE_FACTURA_B]: CbteTipo.FCE_NOTA_DEBITO_B,
|
|
162
|
+
[CbteTipo.FCE_FACTURA_C]: CbteTipo.FCE_NOTA_DEBITO_C,
|
|
163
|
+
};
|
|
164
|
+
/** CbteTipo que NO discriminan IVA (Monotributista - tipo C) */
|
|
165
|
+
const TIPOS_C = new Set([
|
|
166
|
+
CbteTipo.FACTURA_C,
|
|
167
|
+
CbteTipo.NOTA_DEBITO_C,
|
|
168
|
+
CbteTipo.NOTA_CREDITO_C,
|
|
169
|
+
CbteTipo.RECIBO_C,
|
|
170
|
+
CbteTipo.FCE_FACTURA_C,
|
|
171
|
+
CbteTipo.FCE_NOTA_DEBITO_C,
|
|
172
|
+
CbteTipo.FCE_NOTA_CREDITO_C,
|
|
173
|
+
]);
|
|
174
|
+
export function isTipoC(cbteTipo) {
|
|
175
|
+
return TIPOS_C.has(cbteTipo);
|
|
176
|
+
}
|
|
177
|
+
// ============================================================
|
|
142
178
|
// Tipos de Tributo
|
|
143
179
|
// ============================================================
|
|
144
180
|
export var TributoTipo;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error base para todos los errores del SDK de ARCA.
|
|
3
|
+
*/
|
|
4
|
+
export declare class ArcaError extends Error {
|
|
5
|
+
constructor(message: string);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Error de autenticación WSAA.
|
|
9
|
+
* Se lanza cuando falla el login o la respuesta de WSAA es inválida.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ArcaAuthError extends ArcaError {
|
|
12
|
+
constructor(message: string);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Error de WSFE con códigos de error de AFIP.
|
|
16
|
+
*/
|
|
17
|
+
export declare class ArcaWSFEError extends ArcaError {
|
|
18
|
+
readonly errors: {
|
|
19
|
+
code: number;
|
|
20
|
+
msg: string;
|
|
21
|
+
}[];
|
|
22
|
+
constructor(errors: {
|
|
23
|
+
code: number;
|
|
24
|
+
msg: string;
|
|
25
|
+
}[]);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Error a nivel SOAP/HTTP.
|
|
29
|
+
* Se lanza cuando el request HTTP falla o hay un SOAP Fault.
|
|
30
|
+
*/
|
|
31
|
+
export declare class ArcaSoapError extends ArcaError {
|
|
32
|
+
readonly statusCode?: number;
|
|
33
|
+
constructor(message: string, statusCode?: number);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,SAAS;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,SAAS;IAC1C,SAAgB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;gBAE5C,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE;CAMpD;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,SAAS;IAC1C,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAExB,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAKjD"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error base para todos los errores del SDK de ARCA.
|
|
3
|
+
*/
|
|
4
|
+
export class ArcaError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "ArcaError";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Error de autenticación WSAA.
|
|
12
|
+
* Se lanza cuando falla el login o la respuesta de WSAA es inválida.
|
|
13
|
+
*/
|
|
14
|
+
export class ArcaAuthError extends ArcaError {
|
|
15
|
+
constructor(message) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.name = "ArcaAuthError";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Error de WSFE con códigos de error de AFIP.
|
|
22
|
+
*/
|
|
23
|
+
export class ArcaWSFEError extends ArcaError {
|
|
24
|
+
errors;
|
|
25
|
+
constructor(errors) {
|
|
26
|
+
const msg = errors.map((e) => `[${e.code}] ${e.msg}`).join("; ");
|
|
27
|
+
super(`WSFE Error: ${msg}`);
|
|
28
|
+
this.name = "ArcaWSFEError";
|
|
29
|
+
this.errors = errors;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Error a nivel SOAP/HTTP.
|
|
34
|
+
* Se lanza cuando el request HTTP falla o hay un SOAP Fault.
|
|
35
|
+
*/
|
|
36
|
+
export class ArcaSoapError extends ArcaError {
|
|
37
|
+
statusCode;
|
|
38
|
+
constructor(message, statusCode) {
|
|
39
|
+
super(message);
|
|
40
|
+
this.name = "ArcaSoapError";
|
|
41
|
+
this.statusCode = statusCode;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,SAAS;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,SAAS;IAC1B,MAAM,CAAkC;IAExD,YAAY,MAAuC;QACjD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,SAAS;IAC1B,UAAU,CAAU;IAEpC,YAAY,OAAe,EAAE,UAAmB;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { LineItem, FacturarOpts, Importes, FacturaResult, InvoiceDetail, AlicuotaIva, FECAESolicitarResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Convierte un Date o string YYYYMMDD a string YYYYMMDD.
|
|
4
|
+
* Si recibe un Date, lo formatea en timezone Argentina.
|
|
5
|
+
*/
|
|
6
|
+
export declare function toDateString(d: Date | string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Calcula los importes de una factura a partir de line items.
|
|
9
|
+
*
|
|
10
|
+
* - Items con `iva` → gravados (ImpNeto + ImpIVA), agrupados por alícuota en el array Iva
|
|
11
|
+
* - Items con `exento: true` → exentos (ImpOpEx)
|
|
12
|
+
* - Items sin `iva` ni `exento` → no gravados (ImpTotConc)
|
|
13
|
+
* - Para comprobantes tipo C (monotributista): no discrimina IVA, todo va a ImpNeto
|
|
14
|
+
*
|
|
15
|
+
* @param items - Line items con importe neto
|
|
16
|
+
* @param opts - Opciones: tributos y si es tipo C
|
|
17
|
+
* @returns Importes calculados e array de alícuotas IVA
|
|
18
|
+
*/
|
|
19
|
+
export declare function calcularTotales(items: LineItem[], opts?: {
|
|
20
|
+
tributos?: {
|
|
21
|
+
Importe: number;
|
|
22
|
+
}[];
|
|
23
|
+
tipoC?: boolean;
|
|
24
|
+
}): {
|
|
25
|
+
importes: Importes;
|
|
26
|
+
iva: AlicuotaIva[];
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Construye un InvoiceDetail a partir de FacturarOpts y un número de comprobante.
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildInvoiceDetail(opts: FacturarOpts, cbteNum: number): {
|
|
32
|
+
detail: InvoiceDetail;
|
|
33
|
+
importes: Importes;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Parsea el resultado crudo de FECAESolicitar a un FacturaResult limpio.
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseFacturaResult(result: FECAESolicitarResult, importes: Importes): FacturaResult;
|
|
39
|
+
//# sourceMappingURL=facturacion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facturacion.d.ts","sourceRoot":"","sources":["../src/facturacion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,aAAa,EACb,WAAW,EACX,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAMpB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAUrD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,QAAQ,EAAE,EACjB,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3D;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,WAAW,EAAE,CAAA;CAAE,CAwF5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,MAAM,GACd;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAiD/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,QAAQ,GACjB,aAAa,CA6Bf"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { IVA_RATES, Concepto, DocTipo, Moneda, isTipoC } from "./constants.js";
|
|
2
|
+
function round2(n) {
|
|
3
|
+
return Math.round(n * 100) / 100;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Convierte un Date o string YYYYMMDD a string YYYYMMDD.
|
|
7
|
+
* Si recibe un Date, lo formatea en timezone Argentina.
|
|
8
|
+
*/
|
|
9
|
+
export function toDateString(d) {
|
|
10
|
+
if (typeof d === "string")
|
|
11
|
+
return d;
|
|
12
|
+
return d
|
|
13
|
+
.toLocaleDateString("en-CA", {
|
|
14
|
+
timeZone: "America/Argentina/Buenos_Aires",
|
|
15
|
+
year: "numeric",
|
|
16
|
+
month: "2-digit",
|
|
17
|
+
day: "2-digit",
|
|
18
|
+
})
|
|
19
|
+
.replace(/-/g, "");
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Calcula los importes de una factura a partir de line items.
|
|
23
|
+
*
|
|
24
|
+
* - Items con `iva` → gravados (ImpNeto + ImpIVA), agrupados por alícuota en el array Iva
|
|
25
|
+
* - Items con `exento: true` → exentos (ImpOpEx)
|
|
26
|
+
* - Items sin `iva` ni `exento` → no gravados (ImpTotConc)
|
|
27
|
+
* - Para comprobantes tipo C (monotributista): no discrimina IVA, todo va a ImpNeto
|
|
28
|
+
*
|
|
29
|
+
* @param items - Line items con importe neto
|
|
30
|
+
* @param opts - Opciones: tributos y si es tipo C
|
|
31
|
+
* @returns Importes calculados e array de alícuotas IVA
|
|
32
|
+
*/
|
|
33
|
+
export function calcularTotales(items, opts) {
|
|
34
|
+
const tipoC = opts?.tipoC ?? false;
|
|
35
|
+
// Para tipo C, no discriminar IVA: todo va a ImpNeto
|
|
36
|
+
if (tipoC) {
|
|
37
|
+
let impNeto = 0;
|
|
38
|
+
for (const item of items) {
|
|
39
|
+
impNeto = round2(impNeto + item.neto);
|
|
40
|
+
}
|
|
41
|
+
let impTrib = 0;
|
|
42
|
+
if (opts?.tributos) {
|
|
43
|
+
for (const t of opts.tributos) {
|
|
44
|
+
impTrib = round2(impTrib + t.Importe);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const impTotal = round2(impNeto + impTrib);
|
|
48
|
+
return {
|
|
49
|
+
importes: {
|
|
50
|
+
total: impTotal,
|
|
51
|
+
neto: impNeto,
|
|
52
|
+
iva: 0,
|
|
53
|
+
exento: 0,
|
|
54
|
+
noGravado: 0,
|
|
55
|
+
tributos: impTrib,
|
|
56
|
+
},
|
|
57
|
+
iva: [],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
let impNeto = 0;
|
|
61
|
+
let impIVA = 0;
|
|
62
|
+
let impOpEx = 0;
|
|
63
|
+
let impTotConc = 0;
|
|
64
|
+
const ivaMap = new Map();
|
|
65
|
+
for (const item of items) {
|
|
66
|
+
if (item.exento) {
|
|
67
|
+
impOpEx = round2(impOpEx + item.neto);
|
|
68
|
+
}
|
|
69
|
+
else if (item.iva !== undefined) {
|
|
70
|
+
impNeto = round2(impNeto + item.neto);
|
|
71
|
+
const rate = IVA_RATES[item.iva];
|
|
72
|
+
if (rate === undefined) {
|
|
73
|
+
throw new Error(`Tipo de IVA desconocido: ${item.iva}`);
|
|
74
|
+
}
|
|
75
|
+
const ivaAmount = round2((item.neto * rate) / 100);
|
|
76
|
+
impIVA = round2(impIVA + ivaAmount);
|
|
77
|
+
const existing = ivaMap.get(item.iva);
|
|
78
|
+
if (existing) {
|
|
79
|
+
existing.baseImp = round2(existing.baseImp + item.neto);
|
|
80
|
+
existing.importe = round2(existing.importe + ivaAmount);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
ivaMap.set(item.iva, { baseImp: item.neto, importe: ivaAmount });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// No gravado
|
|
88
|
+
impTotConc = round2(impTotConc + item.neto);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
let impTrib = 0;
|
|
92
|
+
if (opts?.tributos) {
|
|
93
|
+
for (const t of opts.tributos) {
|
|
94
|
+
impTrib = round2(impTrib + t.Importe);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const impTotal = round2(impNeto + impIVA + impOpEx + impTotConc + impTrib);
|
|
98
|
+
const ivaArray = Array.from(ivaMap.entries()).map(([id, { baseImp, importe }]) => ({
|
|
99
|
+
Id: id,
|
|
100
|
+
BaseImp: baseImp,
|
|
101
|
+
Importe: importe,
|
|
102
|
+
}));
|
|
103
|
+
return {
|
|
104
|
+
importes: {
|
|
105
|
+
total: impTotal,
|
|
106
|
+
neto: impNeto,
|
|
107
|
+
iva: impIVA,
|
|
108
|
+
exento: impOpEx,
|
|
109
|
+
noGravado: impTotConc,
|
|
110
|
+
tributos: impTrib,
|
|
111
|
+
},
|
|
112
|
+
iva: ivaArray,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Construye un InvoiceDetail a partir de FacturarOpts y un número de comprobante.
|
|
117
|
+
*/
|
|
118
|
+
export function buildInvoiceDetail(opts, cbteNum) {
|
|
119
|
+
const esServicio = opts.servicio !== undefined;
|
|
120
|
+
const concepto = opts.concepto ?? (esServicio ? Concepto.SERVICIOS : Concepto.PRODUCTOS);
|
|
121
|
+
const tipoC = isTipoC(opts.cbteTipo);
|
|
122
|
+
const { importes, iva: ivaArray } = calcularTotales(opts.items, {
|
|
123
|
+
tributos: opts.tributos,
|
|
124
|
+
tipoC,
|
|
125
|
+
});
|
|
126
|
+
const fecha = opts.fecha ? toDateString(opts.fecha) : toDateString(new Date());
|
|
127
|
+
const detail = {
|
|
128
|
+
Concepto: concepto,
|
|
129
|
+
DocTipo: opts.docTipo ?? DocTipo.CONSUMIDOR_FINAL,
|
|
130
|
+
DocNro: opts.docNro ?? 0,
|
|
131
|
+
CbteDesde: cbteNum,
|
|
132
|
+
CbteHasta: cbteNum,
|
|
133
|
+
CbteFch: fecha,
|
|
134
|
+
ImpTotal: importes.total,
|
|
135
|
+
ImpTotConc: importes.noGravado,
|
|
136
|
+
ImpNeto: importes.neto,
|
|
137
|
+
ImpOpEx: importes.exento,
|
|
138
|
+
ImpTrib: importes.tributos,
|
|
139
|
+
ImpIVA: importes.iva,
|
|
140
|
+
MonId: opts.moneda ?? Moneda.PESOS,
|
|
141
|
+
MonCotiz: opts.cotizacion ?? 1,
|
|
142
|
+
};
|
|
143
|
+
if (ivaArray.length > 0) {
|
|
144
|
+
detail.Iva = ivaArray;
|
|
145
|
+
}
|
|
146
|
+
if (opts.servicio) {
|
|
147
|
+
detail.FchServDesde = toDateString(opts.servicio.desde);
|
|
148
|
+
detail.FchServHasta = toDateString(opts.servicio.hasta);
|
|
149
|
+
detail.FchVtoPago = toDateString(opts.servicio.vtoPago);
|
|
150
|
+
}
|
|
151
|
+
if (opts.tributos && opts.tributos.length > 0) {
|
|
152
|
+
detail.Tributos = opts.tributos;
|
|
153
|
+
}
|
|
154
|
+
if (opts.opcionales && opts.opcionales.length > 0) {
|
|
155
|
+
detail.Opcionales = opts.opcionales;
|
|
156
|
+
}
|
|
157
|
+
return { detail, importes };
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Parsea el resultado crudo de FECAESolicitar a un FacturaResult limpio.
|
|
161
|
+
*/
|
|
162
|
+
export function parseFacturaResult(result, importes) {
|
|
163
|
+
const detArr = Array.isArray(result.FeDetResp.FECAEDetResponse)
|
|
164
|
+
? result.FeDetResp.FECAEDetResponse
|
|
165
|
+
: [result.FeDetResp.FECAEDetResponse];
|
|
166
|
+
const det = detArr[0];
|
|
167
|
+
const aprobada = det.Resultado === "A";
|
|
168
|
+
const observaciones = [];
|
|
169
|
+
if (det.Observaciones) {
|
|
170
|
+
const obs = Array.isArray(det.Observaciones.Obs)
|
|
171
|
+
? det.Observaciones.Obs
|
|
172
|
+
: [det.Observaciones.Obs];
|
|
173
|
+
for (const o of obs) {
|
|
174
|
+
observaciones.push({ code: o.Code, msg: o.Msg });
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
aprobada,
|
|
179
|
+
cae: aprobada ? det.CAE : undefined,
|
|
180
|
+
caeVencimiento: aprobada ? det.CAEFchVto : undefined,
|
|
181
|
+
cbteNro: det.CbteDesde,
|
|
182
|
+
ptoVta: result.FeCabResp.PtoVta,
|
|
183
|
+
cbteTipo: result.FeCabResp.CbteTipo,
|
|
184
|
+
importes,
|
|
185
|
+
observaciones,
|
|
186
|
+
raw: result,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=facturacion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facturacion.js","sourceRoot":"","sources":["../src/facturacion.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { Arca } from "./arca.js";
|
|
2
|
-
export
|
|
3
|
-
export {
|
|
2
|
+
export { ArcaError, ArcaAuthError, ArcaWSFEError, ArcaSoapError, } from "./errors.js";
|
|
3
|
+
export type { ArcaConfig, AccessTicket, WsfeAuth, AlicuotaIva, Tributo, ComprobanteAsociado, Opcional, InvoiceDetail, InvoiceRequest, FeCabResp, FECAEDetResponse, FECAESolicitarResult, FECompUltimoAutorizadoResult, FECompConsultarResult, ServerStatus, ParamItem, MonedaItem, PtoVentaItem, CotizacionResult, WsError, LineItem, FacturarOpts, NotaCreditoOpts, NotaDebitoOpts, ComprobanteRef, FacturaResult, Importes, } from "./types.js";
|
|
4
|
+
export { ENDPOINTS, WSFE_NAMESPACE, CbteTipo, Concepto, DocTipo, IvaTipo, IVA_RATES, Moneda, TributoTipo, NOTA_CREDITO_MAP, NOTA_DEBITO_MAP, } from "./constants.js";
|
|
4
5
|
export { WsaaClient } from "./wsaa.js";
|
|
5
6
|
export { WsfeClient } from "./wsfe.js";
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,YAAY,EACV,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,OAAO,EACP,mBAAmB,EACnB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,4BAA4B,EAC5B,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,OAAO,EACP,mBAAmB,EACnB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,4BAA4B,EAC5B,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,OAAO,EAEP,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,QAAQ,GACT,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
|