@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.
- package/README.md +171 -318
- package/dist/arca-mtxca.d.ts +83 -75
- package/dist/arca-mtxca.d.ts.map +1 -1
- package/dist/arca-mtxca.js +197 -141
- package/dist/arca-mtxca.js.map +1 -1
- package/dist/constants.d.ts +37 -21
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +49 -22
- package/dist/constants.js.map +1 -1
- package/dist/format.d.ts +18 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +65 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -10
- package/dist/index.js.map +1 -1
- package/dist/mtxca-client.d.ts +90 -32
- package/dist/mtxca-client.d.ts.map +1 -1
- package/dist/mtxca-client.js +416 -324
- package/dist/mtxca-client.js.map +1 -1
- package/dist/parse.d.ts +31 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +82 -0
- package/dist/parse.js.map +1 -0
- package/dist/serialize.d.ts +43 -0
- package/dist/serialize.d.ts.map +1 -0
- package/dist/serialize.js +323 -0
- package/dist/serialize.js.map +1 -0
- package/dist/types.d.ts +314 -174
- package/dist/types.d.ts.map +1 -1
- package/dist/validation.d.ts +16 -7
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +292 -92
- package/dist/validation.js.map +1 -1
- package/llms.txt +81 -159
- package/package.json +5 -4
package/dist/constants.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ export declare const MTXCA_ENDPOINTS: {
|
|
|
2
2
|
readonly testing: "https://fwshomo.afip.gov.ar/wsmtxca/services/MTXCAService";
|
|
3
3
|
readonly production: "https://serviciosjava.afip.gob.ar/wsmtxca/services/MTXCAService";
|
|
4
4
|
};
|
|
5
|
-
|
|
5
|
+
/** targetNamespace del WSDL de WSMTXCA (`elementFormDefault` unqualified). */
|
|
6
|
+
export declare const MTXCA_NAMESPACE = "http://impl.service.wsmtxca.afip.gov.ar/service/";
|
|
6
7
|
/** WSAA service ID for WSMTXCA */
|
|
7
8
|
export declare const MTXCA_SERVICE_ID = "wsmtxca";
|
|
8
9
|
export declare enum CbteTipo {
|
|
@@ -12,41 +13,56 @@ export declare enum CbteTipo {
|
|
|
12
13
|
FACTURA_B = 6,
|
|
13
14
|
NOTA_DEBITO_B = 7,
|
|
14
15
|
NOTA_CREDITO_B = 8,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
/** Factura A con leyenda "OPERACIÓN SUJETA A RETENCIÓN" */
|
|
17
|
+
FACTURA_A_SUJETA_RETENCION = 51,
|
|
18
|
+
/** Nota de Débito A con leyenda "OPERACIÓN SUJETA A RETENCIÓN" */
|
|
19
|
+
NOTA_DEBITO_A_SUJETA_RETENCION = 52,
|
|
20
|
+
/** Nota de Crédito A con leyenda "OPERACIÓN SUJETA A RETENCIÓN" */
|
|
21
|
+
NOTA_CREDITO_A_SUJETA_RETENCION = 53,
|
|
22
|
+
/** Factura de Crédito Electrónica MiPyMEs (FCE) A */
|
|
23
|
+
FCE_FACTURA_A = 201,
|
|
24
|
+
FCE_NOTA_DEBITO_A = 202,
|
|
25
|
+
FCE_NOTA_CREDITO_A = 203,
|
|
26
|
+
/** Factura de Crédito Electrónica MiPyMEs (FCE) B */
|
|
27
|
+
FCE_FACTURA_B = 206,
|
|
28
|
+
FCE_NOTA_DEBITO_B = 207,
|
|
29
|
+
FCE_NOTA_CREDITO_B = 208
|
|
18
30
|
}
|
|
19
31
|
export declare enum Concepto {
|
|
20
32
|
PRODUCTOS = 1,
|
|
21
33
|
SERVICIOS = 2,
|
|
22
34
|
PRODUCTOS_Y_SERVICIOS = 3
|
|
23
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Condiciones de IVA de un ítem según el manual de WSMTXCA. Para la lista
|
|
38
|
+
* vigente usá `getCondicionesIVA()`.
|
|
39
|
+
*/
|
|
24
40
|
export declare enum CodigoCondicionIVA {
|
|
25
41
|
NO_GRAVADO = 1,
|
|
26
42
|
EXENTO = 2,
|
|
27
43
|
IVA_0 = 3,
|
|
28
44
|
IVA_10_5 = 4,
|
|
29
45
|
IVA_21 = 5,
|
|
30
|
-
IVA_27 = 6
|
|
31
|
-
GRAVADO = 7,
|
|
32
|
-
IVA_5 = 8,
|
|
33
|
-
IVA_2_5 = 9
|
|
46
|
+
IVA_27 = 6
|
|
34
47
|
}
|
|
48
|
+
/** Alícuota de cada condición de IVA (para validar y calcular importes). */
|
|
49
|
+
export declare const ALICUOTAS_IVA: Readonly<Record<number, number>>;
|
|
50
|
+
/**
|
|
51
|
+
* Unidades de medida con reglas propias en el manual. Las descripciones son
|
|
52
|
+
* las de `consultarUnidadesMedida`; confirmalas con `getUnidadesMedida()`.
|
|
53
|
+
*/
|
|
54
|
+
export declare enum UnidadMedidaEspecial {
|
|
55
|
+
/** Anulación / devolución: importeItem < 0 (e importeIVA <= 0 en clase A). */
|
|
56
|
+
ANULACION_DEVOLUCION = 95,
|
|
57
|
+
/** Seña / anticipo: sin cantidad ni precio unitario; importe de cualquier signo. */
|
|
58
|
+
SENA = 97,
|
|
59
|
+
/** Bonificación: sin cantidad ni precio unitario; importeItem < 0. */
|
|
60
|
+
BONIFICACION = 99
|
|
61
|
+
}
|
|
62
|
+
/** Códigos de moneda frecuentes. La lista completa: `getMonedas()`. */
|
|
35
63
|
export declare enum Moneda {
|
|
36
64
|
PESOS = "PES",
|
|
37
65
|
DOLARES = "DOL",
|
|
38
|
-
EUROS = "060"
|
|
39
|
-
REALES = "012",
|
|
40
|
-
PESOS_URUGUAYOS = "011",
|
|
41
|
-
PESOS_CHILENOS = "033",
|
|
42
|
-
GUARANIES = "031",
|
|
43
|
-
BOLIVIANOS = "029",
|
|
44
|
-
PESOS_COLOMBIANOS = "032",
|
|
45
|
-
PESOS_MEXICANOS = "010",
|
|
46
|
-
LIBRAS_ESTERLINAS = "021",
|
|
47
|
-
YENES = "019",
|
|
48
|
-
FRANCOS_SUIZOS = "009",
|
|
49
|
-
DOLARES_CANADIENSES = "018",
|
|
50
|
-
YUANES = "064"
|
|
66
|
+
EUROS = "060"
|
|
51
67
|
}
|
|
52
68
|
//# sourceMappingURL=constants.d.ts.map
|
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,eAAe;;;CAGlB,CAAC;AAEX,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAEX,8EAA8E;AAC9E,eAAO,MAAM,eAAe,qDAAqD,CAAC;AAElF,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAM1C,oBAAY,QAAQ;IAClB,SAAS,IAAI;IACb,aAAa,IAAI;IACjB,cAAc,IAAI;IAClB,SAAS,IAAI;IACb,aAAa,IAAI;IACjB,cAAc,IAAI;IAClB,2DAA2D;IAC3D,0BAA0B,KAAK;IAC/B,kEAAkE;IAClE,8BAA8B,KAAK;IACnC,mEAAmE;IACnE,+BAA+B,KAAK;IACpC,qDAAqD;IACrD,aAAa,MAAM;IACnB,iBAAiB,MAAM;IACvB,kBAAkB,MAAM;IACxB,qDAAqD;IACrD,aAAa,MAAM;IACnB,iBAAiB,MAAM;IACvB,kBAAkB,MAAM;CACzB;AAMD,oBAAY,QAAQ;IAClB,SAAS,IAAI;IACb,SAAS,IAAI;IACb,qBAAqB,IAAI;CAC1B;AAMD;;;GAGG;AACH,oBAAY,kBAAkB;IAC5B,UAAU,IAAI;IACd,MAAM,IAAI;IACV,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,MAAM,IAAI;CACX;AAED,4EAA4E;AAC5E,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO1D,CAAC;AAMF;;;GAGG;AACH,oBAAY,oBAAoB;IAC9B,8EAA8E;IAC9E,oBAAoB,KAAK;IACzB,oFAAoF;IACpF,IAAI,KAAK;IACT,sEAAsE;IACtE,YAAY,KAAK;CAClB;AAMD,uEAAuE;AACvE,oBAAY,MAAM;IAChB,KAAK,QAAQ;IACb,OAAO,QAAQ;IACf,KAAK,QAAQ;CACd"}
|
package/dist/constants.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
// ---------------------------------------------------------------------------
|
|
2
|
-
// Endpoints
|
|
2
|
+
// Endpoints (manual WSMTXCA, "Dirección URL")
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
export const MTXCA_ENDPOINTS = {
|
|
5
5
|
testing: 'https://fwshomo.afip.gov.ar/wsmtxca/services/MTXCAService',
|
|
6
6
|
production: 'https://serviciosjava.afip.gob.ar/wsmtxca/services/MTXCAService',
|
|
7
7
|
};
|
|
8
|
-
|
|
8
|
+
/** targetNamespace del WSDL de WSMTXCA (`elementFormDefault` unqualified). */
|
|
9
|
+
export const MTXCA_NAMESPACE = 'http://impl.service.wsmtxca.afip.gov.ar/service/';
|
|
9
10
|
/** WSAA service ID for WSMTXCA */
|
|
10
11
|
export const MTXCA_SERVICE_ID = 'wsmtxca';
|
|
11
12
|
// ---------------------------------------------------------------------------
|
|
12
|
-
// Tipos de Comprobante (
|
|
13
|
+
// Tipos de Comprobante admitidos por WSMTXCA (validación 100 del manual)
|
|
13
14
|
// ---------------------------------------------------------------------------
|
|
14
15
|
export var CbteTipo;
|
|
15
16
|
(function (CbteTipo) {
|
|
@@ -19,9 +20,20 @@ export var CbteTipo;
|
|
|
19
20
|
CbteTipo[CbteTipo["FACTURA_B"] = 6] = "FACTURA_B";
|
|
20
21
|
CbteTipo[CbteTipo["NOTA_DEBITO_B"] = 7] = "NOTA_DEBITO_B";
|
|
21
22
|
CbteTipo[CbteTipo["NOTA_CREDITO_B"] = 8] = "NOTA_CREDITO_B";
|
|
22
|
-
|
|
23
|
-
CbteTipo[CbteTipo["
|
|
24
|
-
|
|
23
|
+
/** Factura A con leyenda "OPERACIÓN SUJETA A RETENCIÓN" */
|
|
24
|
+
CbteTipo[CbteTipo["FACTURA_A_SUJETA_RETENCION"] = 51] = "FACTURA_A_SUJETA_RETENCION";
|
|
25
|
+
/** Nota de Débito A con leyenda "OPERACIÓN SUJETA A RETENCIÓN" */
|
|
26
|
+
CbteTipo[CbteTipo["NOTA_DEBITO_A_SUJETA_RETENCION"] = 52] = "NOTA_DEBITO_A_SUJETA_RETENCION";
|
|
27
|
+
/** Nota de Crédito A con leyenda "OPERACIÓN SUJETA A RETENCIÓN" */
|
|
28
|
+
CbteTipo[CbteTipo["NOTA_CREDITO_A_SUJETA_RETENCION"] = 53] = "NOTA_CREDITO_A_SUJETA_RETENCION";
|
|
29
|
+
/** Factura de Crédito Electrónica MiPyMEs (FCE) A */
|
|
30
|
+
CbteTipo[CbteTipo["FCE_FACTURA_A"] = 201] = "FCE_FACTURA_A";
|
|
31
|
+
CbteTipo[CbteTipo["FCE_NOTA_DEBITO_A"] = 202] = "FCE_NOTA_DEBITO_A";
|
|
32
|
+
CbteTipo[CbteTipo["FCE_NOTA_CREDITO_A"] = 203] = "FCE_NOTA_CREDITO_A";
|
|
33
|
+
/** Factura de Crédito Electrónica MiPyMEs (FCE) B */
|
|
34
|
+
CbteTipo[CbteTipo["FCE_FACTURA_B"] = 206] = "FCE_FACTURA_B";
|
|
35
|
+
CbteTipo[CbteTipo["FCE_NOTA_DEBITO_B"] = 207] = "FCE_NOTA_DEBITO_B";
|
|
36
|
+
CbteTipo[CbteTipo["FCE_NOTA_CREDITO_B"] = 208] = "FCE_NOTA_CREDITO_B";
|
|
25
37
|
})(CbteTipo || (CbteTipo = {}));
|
|
26
38
|
// ---------------------------------------------------------------------------
|
|
27
39
|
// Concepto
|
|
@@ -33,8 +45,12 @@ export var Concepto;
|
|
|
33
45
|
Concepto[Concepto["PRODUCTOS_Y_SERVICIOS"] = 3] = "PRODUCTOS_Y_SERVICIOS";
|
|
34
46
|
})(Concepto || (Concepto = {}));
|
|
35
47
|
// ---------------------------------------------------------------------------
|
|
36
|
-
//
|
|
48
|
+
// Condición de IVA de un ítem (consultarCondicionesIVA)
|
|
37
49
|
// ---------------------------------------------------------------------------
|
|
50
|
+
/**
|
|
51
|
+
* Condiciones de IVA de un ítem según el manual de WSMTXCA. Para la lista
|
|
52
|
+
* vigente usá `getCondicionesIVA()`.
|
|
53
|
+
*/
|
|
38
54
|
export var CodigoCondicionIVA;
|
|
39
55
|
(function (CodigoCondicionIVA) {
|
|
40
56
|
CodigoCondicionIVA[CodigoCondicionIVA["NO_GRAVADO"] = 1] = "NO_GRAVADO";
|
|
@@ -43,29 +59,40 @@ export var CodigoCondicionIVA;
|
|
|
43
59
|
CodigoCondicionIVA[CodigoCondicionIVA["IVA_10_5"] = 4] = "IVA_10_5";
|
|
44
60
|
CodigoCondicionIVA[CodigoCondicionIVA["IVA_21"] = 5] = "IVA_21";
|
|
45
61
|
CodigoCondicionIVA[CodigoCondicionIVA["IVA_27"] = 6] = "IVA_27";
|
|
46
|
-
CodigoCondicionIVA[CodigoCondicionIVA["GRAVADO"] = 7] = "GRAVADO";
|
|
47
|
-
CodigoCondicionIVA[CodigoCondicionIVA["IVA_5"] = 8] = "IVA_5";
|
|
48
|
-
CodigoCondicionIVA[CodigoCondicionIVA["IVA_2_5"] = 9] = "IVA_2_5";
|
|
49
62
|
})(CodigoCondicionIVA || (CodigoCondicionIVA = {}));
|
|
63
|
+
/** Alícuota de cada condición de IVA (para validar y calcular importes). */
|
|
64
|
+
export const ALICUOTAS_IVA = {
|
|
65
|
+
[CodigoCondicionIVA.NO_GRAVADO]: 0,
|
|
66
|
+
[CodigoCondicionIVA.EXENTO]: 0,
|
|
67
|
+
[CodigoCondicionIVA.IVA_0]: 0,
|
|
68
|
+
[CodigoCondicionIVA.IVA_10_5]: 0.105,
|
|
69
|
+
[CodigoCondicionIVA.IVA_21]: 0.21,
|
|
70
|
+
[CodigoCondicionIVA.IVA_27]: 0.27,
|
|
71
|
+
};
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
// Unidades de medida con reglas especiales (validaciones 500-519)
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
/**
|
|
76
|
+
* Unidades de medida con reglas propias en el manual. Las descripciones son
|
|
77
|
+
* las de `consultarUnidadesMedida`; confirmalas con `getUnidadesMedida()`.
|
|
78
|
+
*/
|
|
79
|
+
export var UnidadMedidaEspecial;
|
|
80
|
+
(function (UnidadMedidaEspecial) {
|
|
81
|
+
/** Anulación / devolución: importeItem < 0 (e importeIVA <= 0 en clase A). */
|
|
82
|
+
UnidadMedidaEspecial[UnidadMedidaEspecial["ANULACION_DEVOLUCION"] = 95] = "ANULACION_DEVOLUCION";
|
|
83
|
+
/** Seña / anticipo: sin cantidad ni precio unitario; importe de cualquier signo. */
|
|
84
|
+
UnidadMedidaEspecial[UnidadMedidaEspecial["SENA"] = 97] = "SENA";
|
|
85
|
+
/** Bonificación: sin cantidad ni precio unitario; importeItem < 0. */
|
|
86
|
+
UnidadMedidaEspecial[UnidadMedidaEspecial["BONIFICACION"] = 99] = "BONIFICACION";
|
|
87
|
+
})(UnidadMedidaEspecial || (UnidadMedidaEspecial = {}));
|
|
50
88
|
// ---------------------------------------------------------------------------
|
|
51
89
|
// Monedas
|
|
52
90
|
// ---------------------------------------------------------------------------
|
|
91
|
+
/** Códigos de moneda frecuentes. La lista completa: `getMonedas()`. */
|
|
53
92
|
export var Moneda;
|
|
54
93
|
(function (Moneda) {
|
|
55
94
|
Moneda["PESOS"] = "PES";
|
|
56
95
|
Moneda["DOLARES"] = "DOL";
|
|
57
96
|
Moneda["EUROS"] = "060";
|
|
58
|
-
Moneda["REALES"] = "012";
|
|
59
|
-
Moneda["PESOS_URUGUAYOS"] = "011";
|
|
60
|
-
Moneda["PESOS_CHILENOS"] = "033";
|
|
61
|
-
Moneda["GUARANIES"] = "031";
|
|
62
|
-
Moneda["BOLIVIANOS"] = "029";
|
|
63
|
-
Moneda["PESOS_COLOMBIANOS"] = "032";
|
|
64
|
-
Moneda["PESOS_MEXICANOS"] = "010";
|
|
65
|
-
Moneda["LIBRAS_ESTERLINAS"] = "021";
|
|
66
|
-
Moneda["YENES"] = "019";
|
|
67
|
-
Moneda["FRANCOS_SUIZOS"] = "009";
|
|
68
|
-
Moneda["DOLARES_CANADIENSES"] = "018";
|
|
69
|
-
Moneda["YUANES"] = "064";
|
|
70
97
|
})(Moneda || (Moneda = {}));
|
|
71
98
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8CAA8C;AAC9C,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,2DAA2D;IACpE,UAAU,EAAE,iEAAiE;CACrE,CAAC;AAEX,8EAA8E;AAC9E,MAAM,CAAC,MAAM,eAAe,GAAG,kDAAkD,CAAC;AAElF,kCAAkC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAE1C,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAE9E,MAAM,CAAN,IAAY,QAqBX;AArBD,WAAY,QAAQ;IAClB,iDAAa,CAAA;IACb,yDAAiB,CAAA;IACjB,2DAAkB,CAAA;IAClB,iDAAa,CAAA;IACb,yDAAiB,CAAA;IACjB,2DAAkB,CAAA;IAClB,2DAA2D;IAC3D,oFAA+B,CAAA;IAC/B,kEAAkE;IAClE,4FAAmC,CAAA;IACnC,mEAAmE;IACnE,8FAAoC,CAAA;IACpC,qDAAqD;IACrD,2DAAmB,CAAA;IACnB,mEAAuB,CAAA;IACvB,qEAAwB,CAAA;IACxB,qDAAqD;IACrD,2DAAmB,CAAA;IACnB,mEAAuB,CAAA;IACvB,qEAAwB,CAAA;AAC1B,CAAC,EArBW,QAAQ,KAAR,QAAQ,QAqBnB;AAED,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,CAAN,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,iDAAa,CAAA;IACb,iDAAa,CAAA;IACb,yEAAyB,CAAA;AAC3B,CAAC,EAJW,QAAQ,KAAR,QAAQ,QAInB;AAED,8EAA8E;AAC9E,wDAAwD;AACxD,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAN,IAAY,kBAOX;AAPD,WAAY,kBAAkB;IAC5B,uEAAc,CAAA;IACd,+DAAU,CAAA;IACV,6DAAS,CAAA;IACT,mEAAY,CAAA;IACZ,+DAAU,CAAA;IACV,+DAAU,CAAA;AACZ,CAAC,EAPW,kBAAkB,KAAlB,kBAAkB,QAO7B;AAED,4EAA4E;AAC5E,MAAM,CAAC,MAAM,aAAa,GAAqC;IAC7D,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;IAClC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9B,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7B,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,KAAK;IACpC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAAI;IACjC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAAI;CAClC,CAAC;AAEF,8EAA8E;AAC9E,kEAAkE;AAClE,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAN,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,8EAA8E;IAC9E,gGAAyB,CAAA;IACzB,oFAAoF;IACpF,gEAAS,CAAA;IACT,sEAAsE;IACtE,gFAAiB,CAAA;AACnB,CAAC,EAPW,oBAAoB,KAApB,oBAAoB,QAO/B;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,uEAAuE;AACvE,MAAM,CAAN,IAAY,MAIX;AAJD,WAAY,MAAM;IAChB,uBAAa,CAAA;IACb,yBAAe,CAAA;IACf,uBAAa,CAAA;AACf,CAAC,EAJW,MAAM,KAAN,MAAM,QAIjB"}
|
package/dist/format.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { FechaInput } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Redondea a `decimals` decimales (mitad hacia afuera del cero), sin los
|
|
4
|
+
* errores de `toFixed` con binarios (ej. `1.005` → `1.01`).
|
|
5
|
+
*/
|
|
6
|
+
export declare function roundTo(value: number, decimals: number): number;
|
|
7
|
+
/** Redondea un importe a 2 decimales (`ImporteSubtotalSimpleType` / `ImporteTotalSimpleType`). */
|
|
8
|
+
export declare function roundImporte(value: number): number;
|
|
9
|
+
/** Redondea cantidad, precio unitario o bonificación a 6 decimales (`DecimalSimpleType`). */
|
|
10
|
+
export declare function roundDecimal(value: number): number;
|
|
11
|
+
/** `xsd:date`: `YYYY-MM-DD`. Lanza `ArcaValidationError` si la fecha es inválida. */
|
|
12
|
+
export declare function toXsdDate(value: FechaInput, field: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* `xsd:dateTime`. Un `Date` se expresa en hora de Argentina como
|
|
15
|
+
* `YYYY-MM-DDTHH:MM:SS` (formato del manual); un string se valida y se envía tal cual.
|
|
16
|
+
*/
|
|
17
|
+
export declare function toXsdDateTime(value: Date | string, field: string): string;
|
|
18
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAED,kGAAkG;AAClG,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBlE;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAwBzE"}
|
package/dist/format.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { formatDate, ArcaValidationError } from '@ramiidv/arca-common';
|
|
2
|
+
/**
|
|
3
|
+
* Redondea a `decimals` decimales (mitad hacia afuera del cero), sin los
|
|
4
|
+
* errores de `toFixed` con binarios (ej. `1.005` → `1.01`).
|
|
5
|
+
*/
|
|
6
|
+
export function roundTo(value, decimals) {
|
|
7
|
+
const abs = Math.abs(value);
|
|
8
|
+
const text = String(abs);
|
|
9
|
+
const rounded = text.includes('e')
|
|
10
|
+
? Math.round(abs * 10 ** decimals) / 10 ** decimals
|
|
11
|
+
: Number(`${Math.round(Number(`${text}e${decimals}`))}e-${decimals}`);
|
|
12
|
+
const result = value < 0 ? -rounded : rounded;
|
|
13
|
+
return result === 0 ? 0 : result; // sin -0
|
|
14
|
+
}
|
|
15
|
+
/** Redondea un importe a 2 decimales (`ImporteSubtotalSimpleType` / `ImporteTotalSimpleType`). */
|
|
16
|
+
export function roundImporte(value) {
|
|
17
|
+
return roundTo(value, 2);
|
|
18
|
+
}
|
|
19
|
+
/** Redondea cantidad, precio unitario o bonificación a 6 decimales (`DecimalSimpleType`). */
|
|
20
|
+
export function roundDecimal(value) {
|
|
21
|
+
return roundTo(value, 6);
|
|
22
|
+
}
|
|
23
|
+
/** `xsd:date`: `YYYY-MM-DD`. Lanza `ArcaValidationError` si la fecha es inválida. */
|
|
24
|
+
export function toXsdDate(value, field) {
|
|
25
|
+
let yyyymmdd;
|
|
26
|
+
try {
|
|
27
|
+
yyyymmdd = formatDate(value);
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
if (e instanceof ArcaValidationError) {
|
|
31
|
+
throw new ArcaValidationError(`Fecha inválida en "${field}": ${String(value)}`, [{ field, message: 'Fecha inválida (Date, YYYY-MM-DD o YYYYMMDD)', value }], field, { cause: e });
|
|
32
|
+
}
|
|
33
|
+
throw e;
|
|
34
|
+
}
|
|
35
|
+
return `${yyyymmdd.slice(0, 4)}-${yyyymmdd.slice(4, 6)}-${yyyymmdd.slice(6, 8)}`;
|
|
36
|
+
}
|
|
37
|
+
const DATETIME_RE = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?$/;
|
|
38
|
+
let arTimeFormatter;
|
|
39
|
+
/**
|
|
40
|
+
* `xsd:dateTime`. Un `Date` se expresa en hora de Argentina como
|
|
41
|
+
* `YYYY-MM-DDTHH:MM:SS` (formato del manual); un string se valida y se envía tal cual.
|
|
42
|
+
*/
|
|
43
|
+
export function toXsdDateTime(value, field) {
|
|
44
|
+
const invalid = () => new ArcaValidationError(`Fecha/hora inválida en "${field}": ${String(value)}`, [{ field, message: 'Fecha/hora inválida (Date o YYYY-MM-DDTHH:MM:SS)', value }], field);
|
|
45
|
+
if (typeof value === 'string') {
|
|
46
|
+
if (!DATETIME_RE.test(value))
|
|
47
|
+
throw invalid();
|
|
48
|
+
toXsdDate(value.slice(0, 10), field);
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
if (!(value instanceof Date) || Number.isNaN(value.getTime()))
|
|
52
|
+
throw invalid();
|
|
53
|
+
arTimeFormatter ??= new Intl.DateTimeFormat('en-US', {
|
|
54
|
+
timeZone: 'America/Argentina/Buenos_Aires',
|
|
55
|
+
hour12: false,
|
|
56
|
+
hour: '2-digit',
|
|
57
|
+
minute: '2-digit',
|
|
58
|
+
second: '2-digit',
|
|
59
|
+
});
|
|
60
|
+
const parts = arTimeFormatter.formatToParts(value);
|
|
61
|
+
const part = (t) => (parts.find((p) => p.type === t)?.value ?? '00').padStart(2, '0');
|
|
62
|
+
const hour = part('hour') === '24' ? '00' : part('hour');
|
|
63
|
+
return `${toXsdDate(value, field)}T${hour}:${part('minute')}:${part('second')}`;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export { ArcaMtxca } from './arca-mtxca.js';
|
|
2
2
|
export { MtxcaClient } from './mtxca-client.js';
|
|
3
3
|
export type { MtxcaClientConfig } from './mtxca-client.js';
|
|
4
|
-
export { ArcaError, ArcaAuthError, ArcaSoapError, ArcaServiceError, } from '@ramiidv/arca-common';
|
|
5
|
-
export type {
|
|
6
|
-
export {
|
|
7
|
-
export { validateAutorizarRequest, validateMtxcaItem } from './validation.js';
|
|
8
|
-
export { WsaaClient } from '@ramiidv/arca-common';
|
|
4
|
+
export { ArcaError, ArcaAuthError, ArcaSoapError, ArcaServiceError, ArcaValidationError, ArcaTicketVigenteError, } from '@ramiidv/arca-common';
|
|
5
|
+
export type { ServiceErrorDetail, ValidationErrorDetail } from '@ramiidv/arca-common';
|
|
6
|
+
export { WsaaClient, MemoryTicketStorage, FileTicketStorage } from '@ramiidv/arca-common';
|
|
9
7
|
export type { WsaaClientConfig } from '@ramiidv/arca-common';
|
|
8
|
+
export type { ArcaMtxcaConfig, MtxcaAuth, FechaInput, MtxcaItem, MtxcaSubtotalIVA, MtxcaOtroTributo, MtxcaComprobanteAsociado, MtxcaPeriodo, MtxcaDatoAdicional, MtxcaComprador, MtxcaComprobanteBase, MtxcaComprobanteCAE, MtxcaComprobanteCAEA, AutorizarRequest, AutorizarOptions, CodigoDescripcion, CodigoDescripcionString, MtxcaResultado, MtxcaComprobanteCAEResponse, MtxcaAutorizarResult, MtxcaComprobanteCAEAResponse, MtxcaInformarCAEAResult, MtxcaCAEA, MtxcaCAEANoUtilizadoResult, MtxcaItemConsultado, MtxcaComprobanteConsultado, MtxcaConsultaComprobanteResult, PuntoVenta, ActividadVigente, CotizacionResult, AccessTicket, ArcaEvent, CallOptions, LegacyTlsMode, ServerStatus, TicketStorage, } from './types.js';
|
|
9
|
+
export { MTXCA_ENDPOINTS, MTXCA_NAMESPACE, MTXCA_SERVICE_ID, ALICUOTAS_IVA, CbteTipo, Concepto, CodigoCondicionIVA, UnidadMedidaEspecial, Moneda, } from './constants.js';
|
|
10
|
+
export { validateComprobanteCAE, validateComprobanteCAEA } from './validation.js';
|
|
11
|
+
export { roundImporte, roundDecimal } from './format.js';
|
|
10
12
|
//# 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":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,YAAY,EACV,eAAe,EACf,SAAS,EACT,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,EACd,2BAA2B,EAC3B,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,SAAS,EACT,0BAA0B,EAC1B,mBAAmB,EACnB,0BAA0B,EAC1B,8BAA8B,EAC9B,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,GACP,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Cliente de alto nivel
|
|
2
2
|
export { ArcaMtxca } from './arca-mtxca.js';
|
|
3
|
-
//
|
|
3
|
+
// Cliente de bajo nivel
|
|
4
4
|
export { MtxcaClient } from './mtxca-client.js';
|
|
5
|
-
//
|
|
6
|
-
export { ArcaError, ArcaAuthError, ArcaSoapError, ArcaServiceError, } from '@ramiidv/arca-common';
|
|
7
|
-
//
|
|
8
|
-
export {
|
|
9
|
-
//
|
|
10
|
-
export {
|
|
11
|
-
//
|
|
12
|
-
export {
|
|
5
|
+
// Errores (de common)
|
|
6
|
+
export { ArcaError, ArcaAuthError, ArcaSoapError, ArcaServiceError, ArcaValidationError, ArcaTicketVigenteError, } from '@ramiidv/arca-common';
|
|
7
|
+
// WSAA y storage de tickets (de common)
|
|
8
|
+
export { WsaaClient, MemoryTicketStorage, FileTicketStorage } from '@ramiidv/arca-common';
|
|
9
|
+
// Constantes
|
|
10
|
+
export { MTXCA_ENDPOINTS, MTXCA_NAMESPACE, MTXCA_SERVICE_ID, ALICUOTAS_IVA, CbteTipo, Concepto, CodigoCondicionIVA, UnidadMedidaEspecial, Moneda, } from './constants.js';
|
|
11
|
+
// Validación y redondeo
|
|
12
|
+
export { validateComprobanteCAE, validateComprobanteCAEA } from './validation.js';
|
|
13
|
+
export { roundImporte, roundDecimal } from './format.js';
|
|
13
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,wBAAwB;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,sBAAsB;AACtB,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,wCAAwC;AACxC,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA2C1F,aAAa;AACb,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,GACP,MAAM,gBAAgB,CAAC;AAExB,wBAAwB;AACxB,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/mtxca-client.d.ts
CHANGED
|
@@ -1,50 +1,108 @@
|
|
|
1
|
-
import type { ArcaEvent,
|
|
2
|
-
import type { MtxcaAuth,
|
|
1
|
+
import type { ArcaEvent, CallOptions, LegacyTlsMode, ServerStatus } from '@ramiidv/arca-common';
|
|
2
|
+
import type { ActividadVigente, CodigoDescripcion, CodigoDescripcionString, CotizacionResult, FechaInput, MtxcaAuth, MtxcaAutorizarResult, MtxcaCAEA, MtxcaCAEANoUtilizadoResult, MtxcaComprobanteCAE, MtxcaComprobanteCAEA, MtxcaConsultaComprobanteResult, MtxcaInformarCAEAResult, PuntoVenta } from './types.js';
|
|
3
3
|
export interface MtxcaClientConfig {
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
|
|
8
|
-
/**
|
|
4
|
+
/** URL del servicio (ver `MTXCA_ENDPOINTS`). */
|
|
5
|
+
endpoint: string;
|
|
6
|
+
/** Timeout por request en ms (default: 30000). */
|
|
7
|
+
timeout?: number;
|
|
8
|
+
/** Reintentos de consultas ante errores transitorios (default: 1). Las emisiones nunca se reintentan. */
|
|
9
|
+
retries?: number;
|
|
10
|
+
/** Delay base del backoff en ms (default: 1000). */
|
|
11
|
+
retryDelayMs?: number;
|
|
9
12
|
onEvent?: (event: ArcaEvent) => void;
|
|
13
|
+
fetch?: typeof fetch;
|
|
14
|
+
legacyTls?: LegacyTlsMode;
|
|
10
15
|
}
|
|
11
16
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
17
|
+
* Cliente de bajo nivel de WSMTXCA: una función por operación del WSDL. No
|
|
18
|
+
* maneja la autenticación (recibe `MtxcaAuth`) ni la numeración.
|
|
19
|
+
*
|
|
20
|
+
* - Valida los requests contra el XSD y redondea importes (`ArcaValidationError`).
|
|
21
|
+
* - Las consultas lanzan `ArcaServiceError` si ARCA devuelve `arrayErrores`.
|
|
22
|
+
* - Las emisiones (`autorizar*`, `informar*`, `solicitarCAEA`) usan
|
|
23
|
+
* `kind: 'emision'`: no se reintentan y, si no hay respuesta, el
|
|
24
|
+
* `ArcaSoapError` tiene `uncertain: true`.
|
|
14
25
|
*/
|
|
15
26
|
export declare class MtxcaClient {
|
|
16
|
-
private readonly
|
|
17
|
-
private readonly soapOptions?;
|
|
18
|
-
private readonly onEvent?;
|
|
27
|
+
private readonly config;
|
|
19
28
|
constructor(config: MtxcaClientConfig);
|
|
29
|
+
get endpoint(): string;
|
|
20
30
|
private call;
|
|
31
|
+
private static authRequest;
|
|
32
|
+
/** Llamada autenticada: `authRequest` primero, como en todos los request del XSD. */
|
|
33
|
+
private callAuth;
|
|
34
|
+
/** Consulta: lanza `ArcaServiceError` si la respuesta trae `arrayErrores`. */
|
|
35
|
+
private consulta;
|
|
36
|
+
/** `dummy`: estado de los servidores. No requiere autenticación. */
|
|
37
|
+
dummy(opts?: CallOptions): Promise<ServerStatus>;
|
|
21
38
|
/**
|
|
22
|
-
*
|
|
39
|
+
* `autorizarComprobante`. Valida contra el XSD y redondea; no valida la
|
|
40
|
+
* coherencia de importes (eso lo hace `ArcaMtxca.autorizar`). Un rechazo
|
|
41
|
+
* devuelve `resultado: 'R'` con `errores` (no lanza).
|
|
23
42
|
*/
|
|
24
|
-
autorizarComprobante(auth: MtxcaAuth,
|
|
43
|
+
autorizarComprobante(auth: MtxcaAuth, comprobante: MtxcaComprobanteCAE, opts?: CallOptions): Promise<MtxcaAutorizarResult>;
|
|
44
|
+
/** `autorizarAjusteIVA`: comprobante de ajuste de IVA con CAE (ND/NC 2, 3, 7, 8, 52, 53). */
|
|
45
|
+
autorizarAjusteIVA(auth: MtxcaAuth, comprobante: MtxcaComprobanteCAE, opts?: CallOptions): Promise<MtxcaAutorizarResult>;
|
|
46
|
+
private autorizarCAE;
|
|
25
47
|
/**
|
|
26
|
-
*
|
|
48
|
+
* `resultado` es obligatorio. Si falta y hay `arrayErrores`, es un rechazo
|
|
49
|
+
* (`ArcaServiceError`); si falta sin errores, la respuesta es ilegible
|
|
50
|
+
* (`ArcaSoapError` con `uncertain`).
|
|
27
51
|
*/
|
|
28
|
-
|
|
52
|
+
private resultado;
|
|
29
53
|
/**
|
|
30
|
-
*
|
|
54
|
+
* `solicitarCAEA`. `periodo` AAAAMM, `orden` 1 (primera quincena) o 2.
|
|
55
|
+
* Lanza `ArcaServiceError` si ARCA lo rechaza. Es una emisión: si el
|
|
56
|
+
* resultado es incierto, recuperalo con `consultarCAEAEntreFechas`.
|
|
31
57
|
*/
|
|
32
|
-
|
|
58
|
+
solicitarCAEA(auth: MtxcaAuth, periodo: number, orden: number, opts?: CallOptions): Promise<MtxcaCAEA>;
|
|
59
|
+
/** `consultarCAEA`: datos de un CAEA otorgado. */
|
|
60
|
+
consultarCAEA(auth: MtxcaAuth, caea: string, opts?: CallOptions): Promise<MtxcaCAEA>;
|
|
61
|
+
/** `consultarCAEAEntreFechas`: CAEAs otorgados con vigencia entre dos fechas. */
|
|
62
|
+
consultarCAEAEntreFechas(auth: MtxcaAuth, fechaDesde: FechaInput, fechaHasta: FechaInput, opts?: CallOptions): Promise<MtxcaCAEA[]>;
|
|
63
|
+
private parseCAEA;
|
|
64
|
+
/** `informarComprobanteCAEA`. Un rechazo devuelve `resultado: 'R'` con `errores`. */
|
|
65
|
+
informarComprobanteCAEA(auth: MtxcaAuth, comprobante: MtxcaComprobanteCAEA, opts?: CallOptions): Promise<MtxcaInformarCAEAResult>;
|
|
66
|
+
/** `informarAjusteIVACAEA`. Un rechazo devuelve `resultado: 'R'` con `errores`. */
|
|
67
|
+
informarAjusteIVACAEA(auth: MtxcaAuth, comprobante: MtxcaComprobanteCAEA, opts?: CallOptions): Promise<MtxcaInformarCAEAResult>;
|
|
68
|
+
private informarCAEA;
|
|
69
|
+
/** `informarCAEANoUtilizado`: informa que un CAEA no se usó en ningún punto de venta. */
|
|
70
|
+
informarCAEANoUtilizado(auth: MtxcaAuth, caea: string, opts?: CallOptions): Promise<MtxcaCAEANoUtilizadoResult>;
|
|
71
|
+
/** `informarCAEANoUtilizadoPtoVta`: informa que un CAEA no se usó en un punto de venta. */
|
|
72
|
+
informarCAEANoUtilizadoPtoVta(auth: MtxcaAuth, caea: string, numeroPuntoVenta: number, opts?: CallOptions): Promise<MtxcaCAEANoUtilizadoResult>;
|
|
73
|
+
private caeaNoUtilizado;
|
|
74
|
+
/** `consultarPtosVtaCAEANoInformados`: puntos de venta que todavía no informaron movimientos para el CAEA. */
|
|
75
|
+
consultarPtosVtaCAEANoInformados(auth: MtxcaAuth, caea: string, opts?: CallOptions): Promise<PuntoVenta[]>;
|
|
33
76
|
/**
|
|
34
|
-
*
|
|
77
|
+
* `consultarUltimoComprobanteAutorizado`. Lanza `ArcaServiceError` ante
|
|
78
|
+
* cualquier error, incluido 1502 (no hay comprobantes para ese punto de venta
|
|
79
|
+
* y tipo); `ArcaMtxca.ultimoComprobante` lo traduce a 0.
|
|
35
80
|
*/
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
81
|
+
consultarUltimoComprobanteAutorizado(auth: MtxcaAuth, ptoVta: number, cbteTipo: number, opts?: CallOptions): Promise<number>;
|
|
82
|
+
/** `consultarComprobante`: datos de un comprobante autorizado (CAE) o informado (CAEA). */
|
|
83
|
+
consultarComprobante(auth: MtxcaAuth, cbteTipo: number, ptoVta: number, cbteNro: number, opts?: CallOptions): Promise<MtxcaConsultaComprobanteResult>;
|
|
84
|
+
private codigos;
|
|
85
|
+
consultarTiposComprobante(auth: MtxcaAuth, opts?: CallOptions): Promise<CodigoDescripcion[]>;
|
|
86
|
+
consultarTiposDocumento(auth: MtxcaAuth, opts?: CallOptions): Promise<CodigoDescripcion[]>;
|
|
87
|
+
consultarAlicuotasIVA(auth: MtxcaAuth, opts?: CallOptions): Promise<CodigoDescripcion[]>;
|
|
88
|
+
consultarCondicionesIVA(auth: MtxcaAuth, opts?: CallOptions): Promise<CodigoDescripcion[]>;
|
|
89
|
+
/** Condiciones de IVA del receptor admitidas para un tipo de comprobante (RG 5616). */
|
|
90
|
+
consultarCondicionesIVAReceptor(auth: MtxcaAuth, cbteTipo: number, opts?: CallOptions): Promise<CodigoDescripcion[]>;
|
|
91
|
+
consultarUnidadesMedida(auth: MtxcaAuth, opts?: CallOptions): Promise<CodigoDescripcion[]>;
|
|
92
|
+
consultarTiposTributo(auth: MtxcaAuth, opts?: CallOptions): Promise<CodigoDescripcion[]>;
|
|
93
|
+
consultarTiposDatosAdicionales(auth: MtxcaAuth, opts?: CallOptions): Promise<CodigoDescripcion[]>;
|
|
94
|
+
consultarMonedas(auth: MtxcaAuth, opts?: CallOptions): Promise<CodigoDescripcionString[]>;
|
|
95
|
+
/**
|
|
96
|
+
* `consultarCotizacionMoneda`. `cotizacion` es `null` si ARCA no tiene
|
|
97
|
+
* cotización para la moneda en esa fecha (responde sin valor y sin error).
|
|
98
|
+
*/
|
|
99
|
+
consultarCotizacionMoneda(auth: MtxcaAuth, codigoMoneda: string, fechaCotizacion: FechaInput, opts?: CallOptions): Promise<CotizacionResult>;
|
|
100
|
+
private puntosVenta;
|
|
101
|
+
private parsePuntosVenta;
|
|
102
|
+
consultarPuntosVenta(auth: MtxcaAuth, opts?: CallOptions): Promise<PuntoVenta[]>;
|
|
103
|
+
consultarPuntosVentaCAE(auth: MtxcaAuth, opts?: CallOptions): Promise<PuntoVenta[]>;
|
|
104
|
+
consultarPuntosVentaCAEA(auth: MtxcaAuth, opts?: CallOptions): Promise<PuntoVenta[]>;
|
|
105
|
+
/** `consultarActividadesVigentes`: actividades vigentes del emisor. */
|
|
106
|
+
consultarActividadesVigentes(auth: MtxcaAuth, opts?: CallOptions): Promise<ActividadVigente[]>;
|
|
49
107
|
}
|
|
50
108
|
//# sourceMappingURL=mtxca-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mtxca-client.d.ts","sourceRoot":"","sources":["../src/mtxca-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"mtxca-client.d.ts","sourceRoot":"","sources":["../src/mtxca-client.ts"],"names":[],"mappings":"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"}
|