@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.
@@ -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
- export declare const MTXCA_NAMESPACE = "http://impl.service.wsmtxca.afip.gov.ar/";
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
- FACTURA_M = 51,
16
- NOTA_DEBITO_M = 52,
17
- NOTA_CREDITO_M = 53
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
@@ -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,6CAA6C,CAAC;AAE1E,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,SAAS,KAAK;IACd,aAAa,KAAK;IAClB,cAAc,KAAK;CACpB;AAMD,oBAAY,QAAQ;IAClB,SAAS,IAAI;IACb,SAAS,IAAI;IACb,qBAAqB,IAAI;CAC1B;AAMD,oBAAY,kBAAkB;IAC5B,UAAU,IAAI;IACd,MAAM,IAAI;IACV,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,MAAM,IAAI;IACV,OAAO,IAAI;IACX,KAAK,IAAI;IACT,OAAO,IAAI;CACZ;AAMD,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"}
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
- export const MTXCA_NAMESPACE = 'http://impl.service.wsmtxca.afip.gov.ar/';
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 (subset soportado por WSMTXCA)
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
- CbteTipo[CbteTipo["FACTURA_M"] = 51] = "FACTURA_M";
23
- CbteTipo[CbteTipo["NOTA_DEBITO_M"] = 52] = "NOTA_DEBITO_M";
24
- CbteTipo[CbteTipo["NOTA_CREDITO_M"] = 53] = "NOTA_CREDITO_M";
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
- // Condicion de IVA (para items)
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
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,2DAA2D;IACpE,UAAU,EAAE,iEAAiE;CACrE,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG,0CAA0C,CAAC;AAE1E,kCAAkC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAE1C,8EAA8E;AAC9E,sDAAsD;AACtD,8EAA8E;AAE9E,MAAM,CAAN,IAAY,QAUX;AAVD,WAAY,QAAQ;IAClB,iDAAa,CAAA;IACb,yDAAiB,CAAA;IACjB,2DAAkB,CAAA;IAClB,iDAAa,CAAA;IACb,yDAAiB,CAAA;IACjB,2DAAkB,CAAA;IAClB,kDAAc,CAAA;IACd,0DAAkB,CAAA;IAClB,4DAAmB,CAAA;AACrB,CAAC,EAVW,QAAQ,KAAR,QAAQ,QAUnB;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,gCAAgC;AAChC,8EAA8E;AAE9E,MAAM,CAAN,IAAY,kBAUX;AAVD,WAAY,kBAAkB;IAC5B,uEAAc,CAAA;IACd,+DAAU,CAAA;IACV,6DAAS,CAAA;IACT,mEAAY,CAAA;IACZ,+DAAU,CAAA;IACV,+DAAU,CAAA;IACV,iEAAW,CAAA;IACX,6DAAS,CAAA;IACT,iEAAW,CAAA;AACb,CAAC,EAVW,kBAAkB,KAAlB,kBAAkB,QAU7B;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,CAAN,IAAY,MAgBX;AAhBD,WAAY,MAAM;IAChB,uBAAa,CAAA;IACb,yBAAe,CAAA;IACf,uBAAa,CAAA;IACb,wBAAc,CAAA;IACd,iCAAuB,CAAA;IACvB,gCAAsB,CAAA;IACtB,2BAAiB,CAAA;IACjB,4BAAkB,CAAA;IAClB,mCAAyB,CAAA;IACzB,iCAAuB,CAAA;IACvB,mCAAyB,CAAA;IACzB,uBAAa,CAAA;IACb,gCAAsB,CAAA;IACtB,qCAA2B,CAAA;IAC3B,wBAAc,CAAA;AAChB,CAAC,EAhBW,MAAM,KAAN,MAAM,QAgBjB"}
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"}
@@ -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 { ArcaMtxcaConfig, MtxcaAuth, MtxcaItem, SubtotalIVA, MtxcaComprobanteAsociado, MtxcaTributo, MtxcaInvoice, MtxcaObservacion, MtxcaInvoiceResult, AutorizarRequest, MtxcaComprobante, ParamItem, MonedaItem, UnidadMedidaItem, PtoVentaItem, CotizacionResult, AccessTicket, ArcaEvent, ServerStatus, SoapCallOptions, } from './types.js';
6
- export { MTXCA_ENDPOINTS, MTXCA_NAMESPACE, MTXCA_SERVICE_ID, CbteTipo, Concepto, CodigoCondicionIVA, Moneda, } from './constants.js';
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
@@ -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,GACjB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,eAAe,EACf,SAAS,EACT,SAAS,EACT,WAAW,EACX,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAEhB,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,MAAM,GACP,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG9E,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,YAAY,EACV,eAAe,EACf,SAAS,EACT,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,EACd,2BAA2B,EAC3B,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,SAAS,EACT,0BAA0B,EAC1B,mBAAmB,EACnB,0BAA0B,EAC1B,8BAA8B,EAC9B,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,GACP,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,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
- // Main class
1
+ // Cliente de alto nivel
2
2
  export { ArcaMtxca } from './arca-mtxca.js';
3
- // Low-level client
3
+ // Cliente de bajo nivel
4
4
  export { MtxcaClient } from './mtxca-client.js';
5
- // Errors (re-exported from common)
6
- export { ArcaError, ArcaAuthError, ArcaSoapError, ArcaServiceError, } from '@ramiidv/arca-common';
7
- // Constants and enums
8
- export { MTXCA_ENDPOINTS, MTXCA_NAMESPACE, MTXCA_SERVICE_ID, CbteTipo, Concepto, CodigoCondicionIVA, Moneda, } from './constants.js';
9
- // Validation
10
- export { validateAutorizarRequest, validateMtxcaItem } from './validation.js';
11
- // WSAA (re-exported from common)
12
- export { WsaaClient } from '@ramiidv/arca-common';
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,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,mBAAmB;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,mCAAmC;AACnC,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AA2B9B,sBAAsB;AACtB,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,MAAM,GACP,MAAM,gBAAgB,CAAC;AAExB,aAAa;AACb,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,iCAAiC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,wBAAwB;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,sBAAsB;AACtB,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,wCAAwC;AACxC,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA2C1F,aAAa;AACb,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,GACP,MAAM,gBAAgB,CAAC;AAExB,wBAAwB;AACxB,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -1,50 +1,108 @@
1
- import type { ArcaEvent, SoapCallOptions, ServerStatus } from '@ramiidv/arca-common';
2
- import type { MtxcaAuth, AutorizarRequest, MtxcaInvoiceResult, MtxcaComprobante, ParamItem, MonedaItem, UnidadMedidaItem, PtoVentaItem, CotizacionResult } from './types.js';
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
- /** Use production endpoints */
5
- production: boolean;
6
- /** SOAP call options */
7
- soapOptions?: Pick<SoapCallOptions, 'timeout' | 'retries' | 'retryDelayMs'>;
8
- /** Event callback */
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
- * Low-level client for the WSMTXCA web service.
13
- * Wraps each SOAP method. Does not handle authentication.
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 endpoint;
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
- * Autoriza un comprobante con detalle de articulos.
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, request: AutorizarRequest): Promise<MtxcaInvoiceResult>;
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
- * Consulta un comprobante previamente autorizado.
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
- consultarComprobante(auth: MtxcaAuth, cbteTipo: number, ptoVta: number, cbteNro: number): Promise<MtxcaComprobante>;
52
+ private resultado;
29
53
  /**
30
- * Consulta el ultimo comprobante autorizado.
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
- consultarUltimoComprobanteAutorizado(auth: MtxcaAuth, ptoVta: number, cbteTipo: number): Promise<number>;
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
- * Health check. No requiere autenticacion.
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
- dummy(): Promise<ServerStatus>;
37
- consultarTiposComprobante(auth: MtxcaAuth): Promise<ParamItem[]>;
38
- consultarTiposDocumento(auth: MtxcaAuth): Promise<ParamItem[]>;
39
- consultarAlicuotasIVA(auth: MtxcaAuth): Promise<ParamItem[]>;
40
- consultarCondicionesIVA(auth: MtxcaAuth): Promise<ParamItem[]>;
41
- consultarMonedas(auth: MtxcaAuth): Promise<MonedaItem[]>;
42
- consultarUnidadesMedida(auth: MtxcaAuth): Promise<UnidadMedidaItem[]>;
43
- consultarPuntosVenta(auth: MtxcaAuth): Promise<PtoVentaItem[]>;
44
- consultarPuntosVentaCAE(auth: MtxcaAuth): Promise<PtoVentaItem[]>;
45
- consultarPuntosVentaCAEA(auth: MtxcaAuth): Promise<PtoVentaItem[]>;
46
- consultarCotizacionMoneda(auth: MtxcaAuth, monedaId: string): Promise<CotizacionResult>;
47
- private getParam;
48
- private getPtosVenta;
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,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAGhB,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAmDpB,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,wBAAwB;IACxB,WAAW,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC,CAAC;IAC5E,qBAAqB;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAgE;IAC7F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA6B;gBAE1C,MAAM,EAAE,iBAAiB;IAQrC,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACG,oBAAoB,CACxB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,kBAAkB,CAAC;IAoI9B;;OAEG;IACG,oBAAoB,CACxB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC;IA2C5B;;OAEG;IACG,oCAAoC,CACxC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAoBlB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;IAS9B,yBAAyB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAIhE,uBAAuB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAI9D,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAI5D,uBAAuB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAI9D,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAkBxD,uBAAuB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAkBrE,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAI9D,uBAAuB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAIjE,wBAAwB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAIlE,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAqB/E,QAAQ;YAuBR,YAAY;CAqB3B"}
1
+ {"version":3,"file":"mtxca-client.d.ts","sourceRoot":"","sources":["../src/mtxca-client.ts"],"names":[],"mappings":"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"}