@ramiidv/arca-padron 0.3.0 → 0.4.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.
Files changed (120) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +137 -82
  3. package/dist/cjs/arca-padron.d.ts +44 -31
  4. package/dist/cjs/arca-padron.d.ts.map +1 -1
  5. package/dist/cjs/arca-padron.js +61 -27
  6. package/dist/cjs/arca-padron.js.map +1 -1
  7. package/dist/cjs/base-client.d.ts +19 -10
  8. package/dist/cjs/base-client.d.ts.map +1 -1
  9. package/dist/cjs/base-client.js +33 -17
  10. package/dist/cjs/base-client.js.map +1 -1
  11. package/dist/cjs/condicion-iva.d.ts +9 -5
  12. package/dist/cjs/condicion-iva.d.ts.map +1 -1
  13. package/dist/cjs/condicion-iva.js +86 -39
  14. package/dist/cjs/condicion-iva.js.map +1 -1
  15. package/dist/cjs/constants.d.ts +57 -12
  16. package/dist/cjs/constants.d.ts.map +1 -1
  17. package/dist/cjs/constants.js +53 -11
  18. package/dist/cjs/constants.js.map +1 -1
  19. package/dist/cjs/errors.d.ts +38 -10
  20. package/dist/cjs/errors.d.ts.map +1 -1
  21. package/dist/cjs/errors.js +45 -19
  22. package/dist/cjs/errors.js.map +1 -1
  23. package/dist/cjs/index.d.ts +16 -8
  24. package/dist/cjs/index.d.ts.map +1 -1
  25. package/dist/cjs/index.js +27 -17
  26. package/dist/cjs/index.js.map +1 -1
  27. package/dist/cjs/mapping.d.ts +46 -3
  28. package/dist/cjs/mapping.d.ts.map +1 -1
  29. package/dist/cjs/mapping.js +129 -8
  30. package/dist/cjs/mapping.js.map +1 -1
  31. package/dist/cjs/padron-a10.d.ts +8 -5
  32. package/dist/cjs/padron-a10.d.ts.map +1 -1
  33. package/dist/cjs/padron-a10.js +22 -57
  34. package/dist/cjs/padron-a10.js.map +1 -1
  35. package/dist/cjs/padron-a100.d.ts +8 -4
  36. package/dist/cjs/padron-a100.d.ts.map +1 -1
  37. package/dist/cjs/padron-a100.js +27 -17
  38. package/dist/cjs/padron-a100.js.map +1 -1
  39. package/dist/cjs/padron-a13.d.ts +17 -7
  40. package/dist/cjs/padron-a13.d.ts.map +1 -1
  41. package/dist/cjs/padron-a13.js +37 -17
  42. package/dist/cjs/padron-a13.js.map +1 -1
  43. package/dist/cjs/padron-a4.d.ts +8 -5
  44. package/dist/cjs/padron-a4.d.ts.map +1 -1
  45. package/dist/cjs/padron-a4.js +103 -157
  46. package/dist/cjs/padron-a4.js.map +1 -1
  47. package/dist/cjs/padron-a5.d.ts +20 -7
  48. package/dist/cjs/padron-a5.d.ts.map +1 -1
  49. package/dist/cjs/padron-a5.js +82 -57
  50. package/dist/cjs/padron-a5.js.map +1 -1
  51. package/dist/cjs/types.d.ts +39 -48
  52. package/dist/cjs/types.d.ts.map +1 -1
  53. package/dist/esm/arca-padron.d.ts +44 -31
  54. package/dist/esm/arca-padron.d.ts.map +1 -1
  55. package/dist/esm/arca-padron.js +62 -28
  56. package/dist/esm/arca-padron.js.map +1 -1
  57. package/dist/esm/base-client.d.ts +19 -10
  58. package/dist/esm/base-client.d.ts.map +1 -1
  59. package/dist/esm/base-client.js +33 -17
  60. package/dist/esm/base-client.js.map +1 -1
  61. package/dist/esm/condicion-iva.d.ts +9 -5
  62. package/dist/esm/condicion-iva.d.ts.map +1 -1
  63. package/dist/esm/condicion-iva.js +86 -39
  64. package/dist/esm/condicion-iva.js.map +1 -1
  65. package/dist/esm/constants.d.ts +57 -12
  66. package/dist/esm/constants.d.ts.map +1 -1
  67. package/dist/esm/constants.js +53 -11
  68. package/dist/esm/constants.js.map +1 -1
  69. package/dist/esm/errors.d.ts +38 -10
  70. package/dist/esm/errors.d.ts.map +1 -1
  71. package/dist/esm/errors.js +40 -11
  72. package/dist/esm/errors.js.map +1 -1
  73. package/dist/esm/index.d.ts +16 -8
  74. package/dist/esm/index.d.ts.map +1 -1
  75. package/dist/esm/index.js +14 -6
  76. package/dist/esm/index.js.map +1 -1
  77. package/dist/esm/mapping.d.ts +46 -3
  78. package/dist/esm/mapping.d.ts.map +1 -1
  79. package/dist/esm/mapping.js +117 -7
  80. package/dist/esm/mapping.js.map +1 -1
  81. package/dist/esm/padron-a10.d.ts +8 -5
  82. package/dist/esm/padron-a10.d.ts.map +1 -1
  83. package/dist/esm/padron-a10.js +21 -57
  84. package/dist/esm/padron-a10.js.map +1 -1
  85. package/dist/esm/padron-a100.d.ts +8 -4
  86. package/dist/esm/padron-a100.d.ts.map +1 -1
  87. package/dist/esm/padron-a100.js +27 -17
  88. package/dist/esm/padron-a100.js.map +1 -1
  89. package/dist/esm/padron-a13.d.ts +17 -7
  90. package/dist/esm/padron-a13.d.ts.map +1 -1
  91. package/dist/esm/padron-a13.js +37 -18
  92. package/dist/esm/padron-a13.js.map +1 -1
  93. package/dist/esm/padron-a4.d.ts +8 -5
  94. package/dist/esm/padron-a4.d.ts.map +1 -1
  95. package/dist/esm/padron-a4.js +101 -156
  96. package/dist/esm/padron-a4.js.map +1 -1
  97. package/dist/esm/padron-a5.d.ts +20 -7
  98. package/dist/esm/padron-a5.d.ts.map +1 -1
  99. package/dist/esm/padron-a5.js +82 -57
  100. package/dist/esm/padron-a5.js.map +1 -1
  101. package/dist/esm/types.d.ts +39 -48
  102. package/dist/esm/types.d.ts.map +1 -1
  103. package/llms.txt +46 -27
  104. package/package.json +3 -3
  105. package/dist/cjs/soap-client.d.ts +0 -2
  106. package/dist/cjs/soap-client.d.ts.map +0 -1
  107. package/dist/cjs/soap-client.js +0 -13
  108. package/dist/cjs/soap-client.js.map +0 -1
  109. package/dist/cjs/wsaa.d.ts +0 -3
  110. package/dist/cjs/wsaa.d.ts.map +0 -1
  111. package/dist/cjs/wsaa.js +0 -6
  112. package/dist/cjs/wsaa.js.map +0 -1
  113. package/dist/esm/soap-client.d.ts +0 -2
  114. package/dist/esm/soap-client.d.ts.map +0 -1
  115. package/dist/esm/soap-client.js +0 -3
  116. package/dist/esm/soap-client.js.map +0 -1
  117. package/dist/esm/wsaa.d.ts +0 -3
  118. package/dist/esm/wsaa.d.ts.map +0 -1
  119. package/dist/esm/wsaa.js +0 -2
  120. package/dist/esm/wsaa.js.map +0 -1
@@ -1,12 +1,21 @@
1
- import { afipSoapCall } from './soap-client.js';
1
+ import { afipSoapCall, validateCuit } from '@ramiidv/arca-common';
2
+ import { toPadronError } from './errors.js';
3
+ import { reqString } from './mapping.js';
2
4
  /**
3
- * Abstract base class for Padrón web service clients.
4
- * Provides shared constructor logic and health-check method.
5
+ * Base de los clientes de Padrón.
5
6
  *
6
7
  * Los WS de Padrón declaran los parámetros sin namespace
7
- * (`elementFormDefault="unqualified"`): `afipSoapCall` de arca-common prefija
8
- * el método y deja los parámetros sin namespace. Todas las consultas se
9
- * reintentan ante errores transitorios.
8
+ * (`elementFormDefault="unqualified"`) y `soapAction=""`: `afipSoapCall` de
9
+ * arca-common prefija el método y deja los parámetros sin namespace. Todas las
10
+ * operaciones son consultas: se reintentan ante errores transitorios (nunca
11
+ * ante un SOAP Fault). Los Faults de negocio conocidos (CUIT inexistente,
12
+ * clave inactiva, token no autorizado...) se lanzan como `ArcaPadronServiceError`.
13
+ *
14
+ * Las respuestas se parsean con `parseNumbers: false`: todos los valores llegan
15
+ * como string tal cual los envía ARCA, y `mapping.ts` convierte explícitamente
16
+ * los campos numéricos del WSDL (`optNumber`/`reqNumber`). Así los `xs:string`
17
+ * con contenido numérico (`datoAdicional`, `codPostal`, `piso`, los campos del
18
+ * A100...) no pierden ceros ni decimales (`"10.50"`, `"1E3"`).
10
19
  */
11
20
  export class BasePadronClient {
12
21
  endpoint;
@@ -19,29 +28,36 @@ export class BasePadronClient {
19
28
  this.soapOptions = config.soapOptions;
20
29
  this.onEvent = config.onEvent;
21
30
  }
22
- /** Llama a un método del servicio. */
23
- call(method, params, opts) {
24
- return afipSoapCall(this.endpoint, this.namespace, method, params, {
25
- ...this.soapOptions,
26
- onEvent: this.onEvent,
27
- signal: opts?.signal,
28
- });
31
+ /** Llama a un método del servicio y traduce los Faults de negocio. */
32
+ async call(method, params, opts) {
33
+ try {
34
+ return await afipSoapCall(this.endpoint, this.namespace, method, params, {
35
+ ...this.soapOptions,
36
+ parseNumbers: false,
37
+ kind: 'consulta',
38
+ onEvent: this.onEvent,
39
+ signal: opts?.signal,
40
+ });
41
+ }
42
+ catch (err) {
43
+ throw toPadronError(err, method);
44
+ }
29
45
  }
30
46
  /** Parámetros de autenticación en el orden del WSDL: token, sign, cuitRepresentada. */
31
47
  authParams(auth) {
32
48
  return {
33
49
  token: auth.Token,
34
50
  sign: auth.Sign,
35
- cuitRepresentada: auth.CuitRepresentada,
51
+ cuitRepresentada: validateCuit(auth.CuitRepresentada),
36
52
  };
37
53
  }
38
54
  /** Health check for this service. */
39
55
  async dummy(opts) {
40
56
  const result = await this.call('dummy', {}, opts);
41
57
  return {
42
- appserver: (result['appserver'] ?? ''),
43
- dbserver: (result['dbserver'] ?? ''),
44
- authserver: (result['authserver'] ?? ''),
58
+ appserver: reqString(result['appserver'], 'dummy.appserver'),
59
+ dbserver: reqString(result['dbserver'], 'dummy.dbserver'),
60
+ authserver: reqString(result['authserver'], 'dummy.authserver'),
45
61
  };
46
62
  }
47
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBhD;;;;;;;;GAQG;AACH,MAAM,OAAgB,gBAAgB;IACjB,QAAQ,CAAS;IACjB,SAAS,CAAS;IAClB,WAAW,CAAiE;IAC5E,OAAO,CAA8B;IAExD,YAAY,MAA0B;QACpC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,sCAAsC;IAC5B,IAAI,CACZ,MAAc,EACd,MAA+B,EAC/B,IAAkB;QAElB,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;YACjE,GAAG,IAAI,CAAC,WAAW;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED,uFAAuF;IAC7E,UAAU,CAAC,IAAY;QAC/B,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,KAAK,CAAC,IAAkB;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAElD,OAAO;YACL,SAAS,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAW;YAChD,QAAQ,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAW;YAC9C,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAW;SACnD,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOlE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAkBzC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAgB,gBAAgB;IACjB,QAAQ,CAAS;IACjB,SAAS,CAAS;IAClB,WAAW,CAAqB;IAChC,OAAO,CAA8B;IAExD,YAAY,MAA0B;QACpC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,sEAAsE;IAC5D,KAAK,CAAC,IAAI,CAClB,MAAc,EACd,MAA+B,EAC/B,IAAkB;QAElB,IAAI,CAAC;YACH,OAAO,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;gBACvE,GAAG,IAAI,CAAC,WAAW;gBACnB,YAAY,EAAE,KAAK;gBACnB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,EAAE,MAAM;aACrB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,uFAAuF;IAC7E,UAAU,CAAC,IAAY;QAC/B,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,gBAAgB,EAAE,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,KAAK,CAAC,IAAkB;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO;YACL,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;YAC5D,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;YACzD,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;SAChE,CAAC;IACJ,CAAC;CACF"}
@@ -4,13 +4,17 @@ import type { CondicionIvaPadron, PersonaA4, PersonaA5 } from './types.js';
4
4
  * (constancia de inscripción / A5, o A4), para usarla como `condicionIva` al
5
5
  * facturarle.
6
6
  *
7
- * - Monotributo activo (impuesto 20 o categoría de monotributo) → MONOTRIBUTISTA,
8
- * o MONOTRIBUTO_SOCIAL / MONOTRIBUTO_INDEPENDIENTE_PROMOVIDO según la categoría.
9
- * - IVA activo (impuesto 30) → RESPONSABLE_INSCRIPTO.
10
- * - IVA exento (32) → EXENTO. IVA no alcanzado (34) → IVA_NO_ALCANZADO.
7
+ * - Monotributo activo (impuesto 20 activo; o, si el impuesto 20 no figura, la
8
+ * categoría de monotributo) → MONOTRIBUTISTA, o MONOTRIBUTO_SOCIAL /
9
+ * MONOTRIBUTO_INDEPENDIENTE_PROMOVIDO según la categoría. Un impuesto 20 en
10
+ * baja no cuenta aunque haya categoría.
11
+ * - IVA activo (impuesto 30, ACTIVO o ACTIVO EN TRAMITE) → RESPONSABLE_INSCRIPTO.
12
+ * - IVA (30) en estado EXENTO / EXENTO EN TRAMITE, o impuesto 32 → EXENTO.
13
+ * - Impuesto 34 → IVA_NO_ALCANZADO.
11
14
  * - Si no figura ninguno, devuelve `condicionIva: null`: el padrón no alcanza
12
15
  * para decidir (puede ser consumidor final o sujeto no categorizado según la
13
- * operación). No adivina.
16
+ * operación). Si ARCA informó errores de la constancia (`errorConstancia`,
17
+ * `errorRegimenGeneral`, `errorMonotributo`), el motivo los incluye. No adivina.
14
18
  *
15
19
  * Es una función pura: no consulta ARCA.
16
20
  *
@@ -1 +1 @@
1
- {"version":3,"file":"condicion-iva.d.ts","sourceRoot":"","sources":["../../src/condicion-iva.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAyD3E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,kBAAkB,CA0D1F"}
1
+ {"version":3,"file":"condicion-iva.d.ts","sourceRoot":"","sources":["../../src/condicion-iva.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAsG3E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,kBAAkB,CAuE1F"}
@@ -2,58 +2,94 @@ import { CondicionIva } from '@ramiidv/arca-common';
2
2
  import { ImpuestoId } from './constants.js';
3
3
  /*
4
4
  * Fuentes:
5
- * - Manual del desarrollador ws_sr_constancia_inscripcion v4.1: impuesto 20 =
6
- * MONOTRIBUTO (datosMonotributo), impuesto 30 = IVA (datosRegimenGeneral),
7
- * estadoImpuesto "AC" = activo; las categorías 61, 99 y 100 son de
8
- * monotributo social ("B MONOTRIBUTO SOCIAL ...").
9
- * - IVA exento (32) e IVA no alcanzado (34) no figuran en ese manual: se
10
- * reconocen por id o por la descripción del impuesto. También se reconoce el
11
- * impuesto 30 con estado SUPA "EX" (exento) o "NA" (no alcanzado).
12
- * - Valores de CondicionIva: FEParamGetCondicionIvaReceptor (WSFEv1).
5
+ * - Manual ws_sr_constancia_inscripcion v4.1: impuesto 20 = MONOTRIBUTO
6
+ * (datosMonotributo), impuesto 30 = IVA (datosRegimenGeneral), estadoImpuesto
7
+ * "AC" = activo. Categorías de monotributo (anexo 5.3): 61, 99, 100
8
+ * "B MONOTRIBUTO SOCIAL ..."; 101 a 104 "D/E 2/3 SOCIOS PROY. SERVICIOS /
9
+ * PRODUCTIVO" (proyectos productivos de efectores sociales, Ley 25.865: también
10
+ * monotributo social); 98 "B ASOCIADO COOPERATIVA" (monotributo común: no
11
+ * es necesariamente efector social).
12
+ * - Manual ws_sr_padron_a4 v1.3 §5.3 (TipoEstado): ACTIVO, ACTIVO EN TRAMITE,
13
+ * BAJA PROVISORIA, BAJA DEFINITIVA, EXENTO, EXENTO EN TRAMITE, NO APORTANTE.
14
+ * La constancia informa el id del estado (`estadoImpuesto`, ej: "AC"); solo
15
+ * "AC" figura en los manuales. Las demás abreviaturas que se reconocen son
16
+ * las iniciales de TipoEstado (EX, BP, BD, NA = NO APORTANTE). "NO APORTANTE"
17
+ * no es "IVA no alcanzado": no se mapea a ninguna condición.
18
+ * - IVA exento (32) e IVA no alcanzado (34) no figuran en los manuales: se
19
+ * reconocen por id o por la descripción del impuesto.
20
+ * - Valores de CondicionIva: FEParamGetCondicionIvaReceptor (WSFEv1, RG 5616).
13
21
  */
14
- const CATEGORIAS_MONOTRIBUTO_SOCIAL = new Set([61, 99, 100]);
15
- function activo(estado) {
16
- return !estado || /^(AC|ACTIVO)$/i.test(estado.trim());
22
+ const CATEGORIAS_MONOTRIBUTO_SOCIAL = new Set([61, 99, 100, 101, 102, 103, 104]);
23
+ const ABREVIATURAS = {
24
+ AC: 'ACTIVO',
25
+ EX: 'EXENTO',
26
+ BP: 'BAJA PROVISORIA',
27
+ BD: 'BAJA DEFINITIVA',
28
+ NA: 'NO APORTANTE',
29
+ };
30
+ /** Normaliza el estado de un impuesto (palabras de TipoEstado o abreviatura SUPA). `''` si no vino. */
31
+ function normalizarEstado(estado) {
32
+ const e = (estado ?? '').trim().toUpperCase().normalize('NFD').replace(/[̀-ͯ]/g, '').replace(/\s+/g, ' ');
33
+ return ABREVIATURAS[e] ?? e;
34
+ }
35
+ /** Activo: ACTIVO o ACTIVO EN TRAMITE. Sin estado (respuestas anteriores a la v3.6 de la constancia) cuenta como activo. */
36
+ function esActivo(estado) {
37
+ return estado === '' || estado === 'ACTIVO' || estado === 'ACTIVO EN TRAMITE';
38
+ }
39
+ function esExento(estado) {
40
+ return estado === 'EXENTO' || estado === 'EXENTO EN TRAMITE';
17
41
  }
18
42
  function esA5(persona) {
19
43
  return Array.isArray(persona.impuestos);
20
44
  }
45
+ function impuesto(id, descripcion, estadoRaw) {
46
+ const estado = normalizarEstado(estadoRaw);
47
+ return { id, descripcion: descripcion ?? '', estado, activo: esActivo(estado) };
48
+ }
21
49
  function impuestosDe(persona) {
22
- if (esA5(persona)) {
23
- return persona.impuestos.map((i) => ({
24
- id: i.idImpuesto,
25
- descripcion: i.descripcionImpuesto ?? '',
26
- estado: (i.estadoImpuesto ?? '').trim().toUpperCase(),
27
- activo: activo(i.estadoImpuesto),
28
- }));
29
- }
30
- return (persona.impuesto ?? []).map((i) => ({
31
- id: i.idImpuesto,
32
- descripcion: i.descripcionImpuesto ?? '',
33
- estado: (i.estado ?? '').trim().toUpperCase(),
34
- activo: activo(i.estado),
35
- }));
50
+ if (esA5(persona))
51
+ return persona.impuestos.map((i) => impuesto(i.idImpuesto, i.descripcionImpuesto, i.estadoImpuesto));
52
+ return (persona.impuesto ?? []).map((i) => impuesto(i.idImpuesto, i.descripcionImpuesto, i.estado));
36
53
  }
37
54
  function categoriaMonotributo(persona) {
38
55
  if (esA5(persona)) {
39
56
  const c = persona.monotributo?.categoria;
40
57
  return c ? { id: c.idCategoria, descripcion: c.descripcionCategoria ?? '' } : undefined;
41
58
  }
42
- const c = (persona.categoria ?? []).find((x) => x.idImpuesto === ImpuestoId.MONOTRIBUTO && activo(x.estado));
59
+ const c = (persona.categoria ?? []).find((x) => x.idImpuesto === ImpuestoId.MONOTRIBUTO && esActivo(normalizarEstado(x.estado)));
43
60
  return c ? { id: c.idCategoria, descripcion: c.descripcionCategoria ?? '' } : undefined;
44
61
  }
62
+ /** Errores que informó la constancia (régimen general / monotributo), para el motivo. */
63
+ function erroresConstancia(persona) {
64
+ if (!esA5(persona))
65
+ return [];
66
+ const out = [];
67
+ const add = (nombre, e) => {
68
+ if (!e)
69
+ return;
70
+ const detalle = e.error.length > 0 ? e.error.join('; ') : (e.mensaje ?? 'sin detalle');
71
+ out.push(`${nombre}: ${detalle}`);
72
+ };
73
+ add('régimen general', persona.errorRegimenGeneral);
74
+ add('monotributo', persona.errorMonotributo);
75
+ return out;
76
+ }
45
77
  /**
46
78
  * Determina la condición frente al IVA de un contribuyente a partir del padrón
47
79
  * (constancia de inscripción / A5, o A4), para usarla como `condicionIva` al
48
80
  * facturarle.
49
81
  *
50
- * - Monotributo activo (impuesto 20 o categoría de monotributo) → MONOTRIBUTISTA,
51
- * o MONOTRIBUTO_SOCIAL / MONOTRIBUTO_INDEPENDIENTE_PROMOVIDO según la categoría.
52
- * - IVA activo (impuesto 30) → RESPONSABLE_INSCRIPTO.
53
- * - IVA exento (32) → EXENTO. IVA no alcanzado (34) → IVA_NO_ALCANZADO.
82
+ * - Monotributo activo (impuesto 20 activo; o, si el impuesto 20 no figura, la
83
+ * categoría de monotributo) → MONOTRIBUTISTA, o MONOTRIBUTO_SOCIAL /
84
+ * MONOTRIBUTO_INDEPENDIENTE_PROMOVIDO según la categoría. Un impuesto 20 en
85
+ * baja no cuenta aunque haya categoría.
86
+ * - IVA activo (impuesto 30, ACTIVO o ACTIVO EN TRAMITE) → RESPONSABLE_INSCRIPTO.
87
+ * - IVA (30) en estado EXENTO / EXENTO EN TRAMITE, o impuesto 32 → EXENTO.
88
+ * - Impuesto 34 → IVA_NO_ALCANZADO.
54
89
  * - Si no figura ninguno, devuelve `condicionIva: null`: el padrón no alcanza
55
90
  * para decidir (puede ser consumidor final o sujeto no categorizado según la
56
- * operación). No adivina.
91
+ * operación). Si ARCA informó errores de la constancia (`errorConstancia`,
92
+ * `errorRegimenGeneral`, `errorMonotributo`), el motivo los incluye. No adivina.
57
93
  *
58
94
  * Es una función pura: no consulta ARCA.
59
95
  *
@@ -66,11 +102,15 @@ function categoriaMonotributo(persona) {
66
102
  export function condicionIvaDesdePadron(persona) {
67
103
  const impuestos = impuestosDe(persona);
68
104
  const tiene = (pred) => impuestos.find((i) => i.activo && pred(i));
69
- const advertencia = persona.estadoClave && persona.estadoClave.toUpperCase() !== 'ACTIVO'
105
+ const errores = erroresConstancia(persona);
106
+ const notaErrores = errores.length > 0 ? ` ARCA informó errores en la constancia (${errores.join(' | ')}).` : '';
107
+ const avisoClave = persona.estadoClave && persona.estadoClave.toUpperCase() !== 'ACTIVO'
70
108
  ? ` Atención: la CUIT tiene estado ${persona.estadoClave}.`
71
109
  : '';
110
+ const advertencia = avisoClave + notaErrores;
72
111
  const categoria = categoriaMonotributo(persona);
73
- const monotributo = tiene((i) => i.id === ImpuestoId.MONOTRIBUTO) ?? (categoria ? true : undefined);
112
+ const impuesto20 = impuestos.find((i) => i.id === ImpuestoId.MONOTRIBUTO);
113
+ const monotributo = impuesto20 ? impuesto20.activo : categoria !== undefined;
74
114
  if (monotributo) {
75
115
  const desc = categoria ? ` (categoría ${categoria.id} - ${categoria.descripcion.trim()})` : '';
76
116
  if (categoria && (CATEGORIAS_MONOTRIBUTO_SOCIAL.has(categoria.id) || /MONOTRIBUTO SOCIAL/i.test(categoria.descripcion))) {
@@ -87,12 +127,12 @@ export function condicionIvaDesdePadron(persona) {
87
127
  if (tiene((i) => i.id === ImpuestoId.IVA_RESPONSABLE_INSCRIPTO)) {
88
128
  return { condicionIva: CondicionIva.RESPONSABLE_INSCRIPTO, motivo: `Inscripto en IVA (impuesto 30).${advertencia}` };
89
129
  }
90
- const iva = impuestos.find((i) => i.id === ImpuestoId.IVA_RESPONSABLE_INSCRIPTO);
91
- if (iva?.estado === 'EX') {
92
- return { condicionIva: CondicionIva.EXENTO, motivo: `IVA (impuesto 30) en estado exento.${advertencia}` };
93
- }
94
- if (iva?.estado === 'NA') {
95
- return { condicionIva: CondicionIva.IVA_NO_ALCANZADO, motivo: `IVA (impuesto 30) en estado no alcanzado.${advertencia}` };
130
+ const ivaExento = impuestos.find((i) => i.id === ImpuestoId.IVA_RESPONSABLE_INSCRIPTO && esExento(i.estado));
131
+ if (ivaExento) {
132
+ return {
133
+ condicionIva: CondicionIva.EXENTO,
134
+ motivo: `IVA (impuesto 30) en estado ${ivaExento.estado}.${advertencia}`,
135
+ };
96
136
  }
97
137
  if (tiene((i) => i.id === ImpuestoId.IVA_EXENTO || /IVA\s+EXENTO/i.test(i.descripcion))) {
98
138
  return { condicionIva: CondicionIva.EXENTO, motivo: `IVA exento (impuesto 32).${advertencia}` };
@@ -106,6 +146,13 @@ export function condicionIvaDesdePadron(persona) {
106
146
  motivo: `ARCA no emitió la constancia: ${persona.errorConstancia.error.join('; ')}.${advertencia}`,
107
147
  };
108
148
  }
149
+ if (errores.length > 0) {
150
+ return {
151
+ condicionIva: null,
152
+ motivo: `No se puede determinar: ARCA no informó datos de ${errores.map((e) => e.split(':')[0]).join(' ni de ')} ` +
153
+ `(${errores.join(' | ')}).${avisoClave}`,
154
+ };
155
+ }
109
156
  return {
110
157
  condicionIva: null,
111
158
  motivo: 'No figura inscripto en IVA ni en monotributo: el padrón no alcanza para determinar la condición ' +
@@ -1 +1 @@
1
- {"version":3,"file":"condicion-iva.js","sourceRoot":"","sources":["../../src/condicion-iva.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"condicion-iva.js","sourceRoot":"","sources":["../../src/condicion-iva.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,14 @@
1
- export { Provincia, DocTipo as TipoDocumento, CondicionIva } from '@ramiidv/arca-common';
1
+ import { DocTipo } from '@ramiidv/arca-common';
2
+ export { Provincia, DocTipo, CondicionIva } from '@ramiidv/arca-common';
3
+ /**
4
+ * @deprecated Es `DocTipo` de arca-common: los códigos numéricos de tipo de
5
+ * documento de WSFEv1 (80 = CUIT, 96 = DNI...). No sirve para interpretar el
6
+ * campo `tipoDocumento` del padrón, que es un string ("DNI", "LC", "LE"...;
7
+ * ver la colección A100 `SUPA.TIPO_DOCUMENTO`). Usá `DocTipo`.
8
+ */
9
+ export declare const TipoDocumento: typeof DocTipo;
10
+ /** @deprecated Usá `DocTipo` (ver la constante `TipoDocumento`). */
11
+ export type TipoDocumento = DocTipo;
2
12
  export declare const ENDPOINTS: {
3
13
  readonly wsaa: {
4
14
  readonly testing: "https://wsaahomo.afip.gov.ar/ws/services/LoginCms";
@@ -47,23 +57,36 @@ export declare enum TipoPersona {
47
57
  FISICA = "FISICA",
48
58
  JURIDICA = "JURIDICA"
49
59
  }
50
- /** IDs de impuestos comunes (SUPA) */
60
+ /**
61
+ * IDs de impuestos de SUPA.
62
+ *
63
+ * Respaldados por los manuales de ARCA: 11, 20, 21, 30, 180, 301, 308
64
+ * (ejemplos y validaciones de los manuales de constancia de inscripción v4.1 y
65
+ * A4 v1.3). Los marcados "sin respaldo" no figuran en esos manuales.
66
+ */
51
67
  export declare enum ImpuestoId {
68
+ /** Ganancias sociedades. Sin respaldo en los manuales del padrón. */
52
69
  GANANCIAS_PJ = 10,
70
+ /** Ganancias personas físicas. */
53
71
  GANANCIAS_PH = 11,
54
- /** Monotributo (manual ws_sr_constancia_inscripcion v4.1). */
72
+ /** Monotributo. */
55
73
  MONOTRIBUTO = 20,
56
- /**
57
- * @deprecated El impuesto 20 es Monotributo (antes estaba mal rotulado). El
58
- * monotributo social se identifica por la categoría (61, 99, 100), no por el impuesto.
59
- */
60
- MONOTRIBUTO_SOCIAL = 20,
74
+ /** Monotributo autónomo (manual A4 v1.3). */
75
+ MONOTRIBUTO_AUTONOMO = 21,
76
+ /** IVA. */
61
77
  IVA_RESPONSABLE_INSCRIPTO = 30,
62
- BIENES_PERSONALES = 31,
78
+ /** IVA exento. Sin respaldo en los manuales del padrón: el A4 informa la exención como impuesto 30 con estado EXENTO. */
63
79
  IVA_EXENTO = 32,
80
+ /** @deprecated Sin respaldo en los manuales del padrón y sin uso en el SDK. */
64
81
  IVA_NO_INSCRIPTO = 33,
82
+ /** IVA no alcanzado. Sin respaldo en los manuales del padrón. */
65
83
  IVA_NO_ALCANZADO = 34,
66
- EMPLEADOR = 301
84
+ /** Bienes personales (manual de constancia v4.1: "180 – Bs Ps"). Antes figuraba, mal, como 31. */
85
+ BIENES_PERSONALES = 180,
86
+ /** Empleador - aportes de la seguridad social. */
87
+ EMPLEADOR = 301,
88
+ /** Aportes de la seguridad social - autónomos. */
89
+ AUTONOMOS = 308
67
90
  }
68
91
  /** Estado de la clave fiscal del contribuyente */
69
92
  export declare enum EstadoClave {
@@ -71,7 +94,13 @@ export declare enum EstadoClave {
71
94
  INACTIVO = "INACTIVO",
72
95
  LIMITADO = "LIMITADO"
73
96
  }
74
- /** Nombres de colecciones disponibles en ws_sr_padron_a100 */
97
+ /**
98
+ * Nombres de colecciones de ws_sr_padron_a100 (manual v2.1, anexo 5.1).
99
+ *
100
+ * La fila de "Categorías de Monotributo según F.184" está cortada en el manual
101
+ * (solo se lee el atributo `COD_CATEGORIA_MONOTRIBUTO`), así que no se incluye:
102
+ * pasá el nombre como string si lo conocés.
103
+ */
75
104
  export declare enum CollectionName {
76
105
  PROVINCIA = "SUPA.E_PROVINCIA",
77
106
  TIPO_DOCUMENTO = "SUPA.TIPO_DOCUMENTO",
@@ -92,6 +121,22 @@ export declare enum CollectionName {
92
121
  PROVINCIA_SOCIEDAD_ORG = "SUPA.A_PROVINCIA_SOCIEDAD_ORG",
93
122
  SEXO = "E_SEXO",
94
123
  CALLE = "PUC_PARAM.T_CALLE",
95
- LOCALIDAD = "PUC_PARAM.T_LOCALIDAD"
124
+ LOCALIDAD = "PUC_PARAM.T_LOCALIDAD",
125
+ /** Tipología de autónomos de monotributo según F.184. */
126
+ AUTONOMO_MONOTRIBUTO = "SUPA.E_AUTONOMO_MONOTRIBUTO",
127
+ /** Nómina de regímenes vigentes y no vigentes. */
128
+ REGIMEN = "SUPA.E_REGIMEN",
129
+ /** Clasificaciones de regímenes. */
130
+ TIPO_REGIMEN = "SUPA.TIPO_REGIMEN",
131
+ /** Atributos y características de los contribuyentes. */
132
+ CARACTERIZACION = "SUPA.E_CARACTERIZACION",
133
+ /** Tipos de documento válidos para el sistema. */
134
+ TIPO_ARCHIVO = "SUPA.TIPO_ARCHIVO",
135
+ /** Relaciones entre actividades y rubros de todos los nomencladores. */
136
+ ACTIVIDAD_RUBRO = "SUPA.A_ACTIVIDAD_RUBRO",
137
+ /** Rubros de los nomencladores de actividades económicas. */
138
+ RUBRO_ACTIVIDAD = "SUPA.E_RUBRO_ACTIVIDAD",
139
+ /** Actividades ocupacionales no incluidas en el nomenclador F.150. */
140
+ ACTIVIDAD_OCUPACIONAL = "SUPA.E_ACTIVIDAD_OCUPACIONAL"
96
141
  }
97
142
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMzF,eAAO,MAAM,SAAS;;;;;IAEpB,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BjF,CAAC;AAMX,yBAAyB;AACzB,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,uBAAuB;AACvB,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,sCAAsC;AACtC,oBAAY,UAAU;IACpB,YAAY,KAAK;IACjB,YAAY,KAAK;IACjB,8DAA8D;IAC9D,WAAW,KAAK;IAChB;;;OAGG;IACH,kBAAkB,KAAK;IACvB,yBAAyB,KAAK;IAC9B,iBAAiB,KAAK;IACtB,UAAU,KAAK;IACf,gBAAgB,KAAK;IACrB,gBAAgB,KAAK;IACrB,SAAS,MAAM;CAChB;AAED,kDAAkD;AAClD,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED,8DAA8D;AAC9D,oBAAY,cAAc;IACxB,SAAS,qBAAqB;IAC9B,cAAc,wBAAwB;IACtC,cAAc,wBAAwB;IACtC,UAAU,mCAAmC;IAC7C,qBAAqB,+BAA+B;IACpD,8BAA8B,oCAAoC;IAClE,aAAa,uBAAuB;IACpC,qBAAqB,+BAA+B;IACpD,wBAAwB,kCAAkC;IAC1D,4BAA4B,sCAAsC;IAClE,UAAU,oBAAoB;IAC9B,aAAa,uBAAuB;IACpC,eAAe,yBAAyB;IACxC,6BAA6B,uCAAuC;IACpE,oBAAoB,gCAAgC;IACpD,iBAAiB,6BAA6B;IAC9C,sBAAsB,kCAAkC;IACxD,IAAI,WAAW;IACf,KAAK,sBAAsB;IAC3B,SAAS,0BAA0B;CACpC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,sBAAsB,CAAC;AAG/D,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,aAAa,gBAAU,CAAC;AACrC,oEAAoE;AACpE,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;AAMpC,eAAO,MAAM,SAAS;;;;;IAEpB,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BjF,CAAC;AAMX,yBAAyB;AACzB,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,uBAAuB;AACvB,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED;;;;;;GAMG;AACH,oBAAY,UAAU;IACpB,qEAAqE;IACrE,YAAY,KAAK;IACjB,kCAAkC;IAClC,YAAY,KAAK;IACjB,mBAAmB;IACnB,WAAW,KAAK;IAChB,6CAA6C;IAC7C,oBAAoB,KAAK;IACzB,WAAW;IACX,yBAAyB,KAAK;IAC9B,yHAAyH;IACzH,UAAU,KAAK;IACf,+EAA+E;IAC/E,gBAAgB,KAAK;IACrB,iEAAiE;IACjE,gBAAgB,KAAK;IACrB,kGAAkG;IAClG,iBAAiB,MAAM;IACvB,kDAAkD;IAClD,SAAS,MAAM;IACf,kDAAkD;IAClD,SAAS,MAAM;CAChB;AAED,kDAAkD;AAClD,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED;;;;;;GAMG;AACH,oBAAY,cAAc;IACxB,SAAS,qBAAqB;IAC9B,cAAc,wBAAwB;IACtC,cAAc,wBAAwB;IACtC,UAAU,mCAAmC;IAC7C,qBAAqB,+BAA+B;IACpD,8BAA8B,oCAAoC;IAClE,aAAa,uBAAuB;IACpC,qBAAqB,+BAA+B;IACpD,wBAAwB,kCAAkC;IAC1D,4BAA4B,sCAAsC;IAClE,UAAU,oBAAoB;IAC9B,aAAa,uBAAuB;IACpC,eAAe,yBAAyB;IACxC,6BAA6B,uCAAuC;IACpE,oBAAoB,gCAAgC;IACpD,iBAAiB,6BAA6B;IAC9C,sBAAsB,kCAAkC;IACxD,IAAI,WAAW;IACf,KAAK,sBAAsB;IAC3B,SAAS,0BAA0B;IACnC,yDAAyD;IACzD,oBAAoB,gCAAgC;IACpD,kDAAkD;IAClD,OAAO,mBAAmB;IAC1B,oCAAoC;IACpC,YAAY,sBAAsB;IAClC,yDAAyD;IACzD,eAAe,2BAA2B;IAC1C,kDAAkD;IAClD,YAAY,sBAAsB;IAClC,wEAAwE;IACxE,eAAe,2BAA2B;IAC1C,6DAA6D;IAC7D,eAAe,2BAA2B;IAC1C,sEAAsE;IACtE,qBAAqB,iCAAiC;CACvD"}
@@ -1,6 +1,13 @@
1
- import { WSAA_ENDPOINTS } from '@ramiidv/arca-common';
1
+ import { DocTipo, WSAA_ENDPOINTS } from '@ramiidv/arca-common';
2
2
  // Re-export shared enums from common
3
- export { Provincia, DocTipo as TipoDocumento, CondicionIva } from '@ramiidv/arca-common';
3
+ export { Provincia, DocTipo, CondicionIva } from '@ramiidv/arca-common';
4
+ /**
5
+ * @deprecated Es `DocTipo` de arca-common: los códigos numéricos de tipo de
6
+ * documento de WSFEv1 (80 = CUIT, 96 = DNI...). No sirve para interpretar el
7
+ * campo `tipoDocumento` del padrón, que es un string ("DNI", "LC", "LE"...;
8
+ * ver la colección A100 `SUPA.TIPO_DOCUMENTO`). Usá `DocTipo`.
9
+ */
10
+ export const TipoDocumento = DocTipo;
4
11
  // ---------------------------------------------------------------------------
5
12
  // Endpoints
6
13
  // ---------------------------------------------------------------------------
@@ -54,24 +61,37 @@ export var TipoPersona;
54
61
  TipoPersona["FISICA"] = "FISICA";
55
62
  TipoPersona["JURIDICA"] = "JURIDICA";
56
63
  })(TipoPersona || (TipoPersona = {}));
57
- /** IDs de impuestos comunes (SUPA) */
64
+ /**
65
+ * IDs de impuestos de SUPA.
66
+ *
67
+ * Respaldados por los manuales de ARCA: 11, 20, 21, 30, 180, 301, 308
68
+ * (ejemplos y validaciones de los manuales de constancia de inscripción v4.1 y
69
+ * A4 v1.3). Los marcados "sin respaldo" no figuran en esos manuales.
70
+ */
58
71
  export var ImpuestoId;
59
72
  (function (ImpuestoId) {
73
+ /** Ganancias sociedades. Sin respaldo en los manuales del padrón. */
60
74
  ImpuestoId[ImpuestoId["GANANCIAS_PJ"] = 10] = "GANANCIAS_PJ";
75
+ /** Ganancias personas físicas. */
61
76
  ImpuestoId[ImpuestoId["GANANCIAS_PH"] = 11] = "GANANCIAS_PH";
62
- /** Monotributo (manual ws_sr_constancia_inscripcion v4.1). */
77
+ /** Monotributo. */
63
78
  ImpuestoId[ImpuestoId["MONOTRIBUTO"] = 20] = "MONOTRIBUTO";
64
- /**
65
- * @deprecated El impuesto 20 es Monotributo (antes estaba mal rotulado). El
66
- * monotributo social se identifica por la categoría (61, 99, 100), no por el impuesto.
67
- */
68
- ImpuestoId[ImpuestoId["MONOTRIBUTO_SOCIAL"] = 20] = "MONOTRIBUTO_SOCIAL";
79
+ /** Monotributo autónomo (manual A4 v1.3). */
80
+ ImpuestoId[ImpuestoId["MONOTRIBUTO_AUTONOMO"] = 21] = "MONOTRIBUTO_AUTONOMO";
81
+ /** IVA. */
69
82
  ImpuestoId[ImpuestoId["IVA_RESPONSABLE_INSCRIPTO"] = 30] = "IVA_RESPONSABLE_INSCRIPTO";
70
- ImpuestoId[ImpuestoId["BIENES_PERSONALES"] = 31] = "BIENES_PERSONALES";
83
+ /** IVA exento. Sin respaldo en los manuales del padrón: el A4 informa la exención como impuesto 30 con estado EXENTO. */
71
84
  ImpuestoId[ImpuestoId["IVA_EXENTO"] = 32] = "IVA_EXENTO";
85
+ /** @deprecated Sin respaldo en los manuales del padrón y sin uso en el SDK. */
72
86
  ImpuestoId[ImpuestoId["IVA_NO_INSCRIPTO"] = 33] = "IVA_NO_INSCRIPTO";
87
+ /** IVA no alcanzado. Sin respaldo en los manuales del padrón. */
73
88
  ImpuestoId[ImpuestoId["IVA_NO_ALCANZADO"] = 34] = "IVA_NO_ALCANZADO";
89
+ /** Bienes personales (manual de constancia v4.1: "180 – Bs Ps"). Antes figuraba, mal, como 31. */
90
+ ImpuestoId[ImpuestoId["BIENES_PERSONALES"] = 180] = "BIENES_PERSONALES";
91
+ /** Empleador - aportes de la seguridad social. */
74
92
  ImpuestoId[ImpuestoId["EMPLEADOR"] = 301] = "EMPLEADOR";
93
+ /** Aportes de la seguridad social - autónomos. */
94
+ ImpuestoId[ImpuestoId["AUTONOMOS"] = 308] = "AUTONOMOS";
75
95
  })(ImpuestoId || (ImpuestoId = {}));
76
96
  /** Estado de la clave fiscal del contribuyente */
77
97
  export var EstadoClave;
@@ -80,7 +100,13 @@ export var EstadoClave;
80
100
  EstadoClave["INACTIVO"] = "INACTIVO";
81
101
  EstadoClave["LIMITADO"] = "LIMITADO";
82
102
  })(EstadoClave || (EstadoClave = {}));
83
- /** Nombres de colecciones disponibles en ws_sr_padron_a100 */
103
+ /**
104
+ * Nombres de colecciones de ws_sr_padron_a100 (manual v2.1, anexo 5.1).
105
+ *
106
+ * La fila de "Categorías de Monotributo según F.184" está cortada en el manual
107
+ * (solo se lee el atributo `COD_CATEGORIA_MONOTRIBUTO`), así que no se incluye:
108
+ * pasá el nombre como string si lo conocés.
109
+ */
84
110
  export var CollectionName;
85
111
  (function (CollectionName) {
86
112
  CollectionName["PROVINCIA"] = "SUPA.E_PROVINCIA";
@@ -103,5 +129,21 @@ export var CollectionName;
103
129
  CollectionName["SEXO"] = "E_SEXO";
104
130
  CollectionName["CALLE"] = "PUC_PARAM.T_CALLE";
105
131
  CollectionName["LOCALIDAD"] = "PUC_PARAM.T_LOCALIDAD";
132
+ /** Tipología de autónomos de monotributo según F.184. */
133
+ CollectionName["AUTONOMO_MONOTRIBUTO"] = "SUPA.E_AUTONOMO_MONOTRIBUTO";
134
+ /** Nómina de regímenes vigentes y no vigentes. */
135
+ CollectionName["REGIMEN"] = "SUPA.E_REGIMEN";
136
+ /** Clasificaciones de regímenes. */
137
+ CollectionName["TIPO_REGIMEN"] = "SUPA.TIPO_REGIMEN";
138
+ /** Atributos y características de los contribuyentes. */
139
+ CollectionName["CARACTERIZACION"] = "SUPA.E_CARACTERIZACION";
140
+ /** Tipos de documento válidos para el sistema. */
141
+ CollectionName["TIPO_ARCHIVO"] = "SUPA.TIPO_ARCHIVO";
142
+ /** Relaciones entre actividades y rubros de todos los nomencladores. */
143
+ CollectionName["ACTIVIDAD_RUBRO"] = "SUPA.A_ACTIVIDAD_RUBRO";
144
+ /** Rubros de los nomencladores de actividades económicas. */
145
+ CollectionName["RUBRO_ACTIVIDAD"] = "SUPA.E_RUBRO_ACTIVIDAD";
146
+ /** Actividades ocupacionales no incluidas en el nomenclador F.150. */
147
+ CollectionName["ACTIVIDAD_OCUPACIONAL"] = "SUPA.E_ACTIVIDAD_OCUPACIONAL";
106
148
  })(CollectionName || (CollectionName = {}));
107
149
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,qCAAqC;AACrC,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzF,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,cAAc;IACpB,yFAAyF;IACzF,EAAE,EAAE;QACF,OAAO,EAAE,oEAAoE;QAC7E,UAAU,EAAE,gEAAgE;QAC5E,SAAS,EAAE,kCAAkC;QAC7C,SAAS,EAAE,8BAA8B;KAC1C;IACD,GAAG,EAAE;QACH,OAAO,EAAE,qEAAqE;QAC9E,UAAU,EAAE,iEAAiE;QAC7E,SAAS,EAAE,mCAAmC;QAC9C,SAAS,EAAE,kBAAkB;KAC9B;IACD,EAAE,EAAE;QACF,OAAO,EAAE,oEAAoE;QAC7E,UAAU,EAAE,gEAAgE;QAC5E,SAAS,EAAE,kCAAkC;QAC7C,SAAS,EAAE,iBAAiB;KAC7B;IACD,GAAG,EAAE;QACH,OAAO,EAAE,qEAAqE;QAC9E,UAAU,EAAE,iEAAiE;QAC7E,SAAS,EAAE,mCAAmC;QAC9C,SAAS,EAAE,kBAAkB;KAC9B;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,4EAA4E;QACrF,UAAU,EAAE,wEAAwE;QACpF,SAAS,EAAE,yCAAyC;QACpD,SAAS,EAAE,mBAAmB;KAC/B;CACO,CAAC;AAEX,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,yBAAyB;AACzB,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,8BAAa,CAAA;AACf,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,uBAAuB;AACvB,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;AACvB,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAED,sCAAsC;AACtC,MAAM,CAAN,IAAY,UAgBX;AAhBD,WAAY,UAAU;IACpB,4DAAiB,CAAA;IACjB,4DAAiB,CAAA;IACjB,8DAA8D;IAC9D,0DAAgB,CAAA;IAChB;;;OAGG;IACH,wEAAuB,CAAA;IACvB,sFAA8B,CAAA;IAC9B,sEAAsB,CAAA;IACtB,wDAAe,CAAA;IACf,oEAAqB,CAAA;IACrB,oEAAqB,CAAA;IACrB,uDAAe,CAAA;AACjB,CAAC,EAhBW,UAAU,KAAV,UAAU,QAgBrB;AAED,kDAAkD;AAClD,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;IACrB,oCAAqB,CAAA;AACvB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,8DAA8D;AAC9D,MAAM,CAAN,IAAY,cAqBX;AArBD,WAAY,cAAc;IACxB,gDAA8B,CAAA;IAC9B,wDAAsC,CAAA;IACtC,wDAAsC,CAAA;IACtC,+DAA6C,CAAA;IAC7C,sEAAoD,CAAA;IACpD,oFAAkE,CAAA;IAClE,sDAAoC,CAAA;IACpC,sEAAoD,CAAA;IACpD,4EAA0D,CAAA;IAC1D,oFAAkE,CAAA;IAClE,gDAA8B,CAAA;IAC9B,sDAAoC,CAAA;IACpC,0DAAwC,CAAA;IACxC,sFAAoE,CAAA;IACpE,sEAAoD,CAAA;IACpD,gEAA8C,CAAA;IAC9C,0EAAwD,CAAA;IACxD,iCAAe,CAAA;IACf,6CAA2B,CAAA;IAC3B,qDAAmC,CAAA;AACrC,CAAC,EArBW,cAAc,KAAd,cAAc,QAqBzB"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,50 @@
1
- export { ArcaError, ArcaAuthError, ArcaSoapError, ArcaServiceError, ArcaTicketVigenteError } from '@ramiidv/arca-common';
2
1
  import { ArcaError, ArcaServiceError } from '@ramiidv/arca-common';
2
+ import type { ServiceErrorDetail } from '@ramiidv/arca-common';
3
3
  /**
4
- * Base error for Padrón SDK.
5
- * Extends ArcaError from common for backward compatibility.
4
+ * Error propio del SDK de Padrón que no es de negocio ni de transporte: la
5
+ * respuesta de ARCA no tiene un dato obligatorio (ej: `personaReturn` sin
6
+ * `persona`) o tiene una forma inesperada.
6
7
  */
7
8
  export declare class ArcaPadronError extends ArcaError {
8
9
  static readonly code: string;
9
- constructor(message: string);
10
+ constructor(message: string, options?: {
11
+ cause?: unknown;
12
+ });
10
13
  }
11
14
  /**
12
- * Error de servicio de Padrón (errores de negocio).
13
- * Extiende ArcaServiceError de common.
15
+ * Motivo de un error de negocio de Padrón. Textos de los manuales de ARCA
16
+ * (A13 v1.4 §5.3 y constancia de inscripción v4.1):
17
+ *
18
+ * - `inexistente`: "La Clave (CUIT/CUIL) consultada es inexistente",
19
+ * "No existe persona con ese Id".
20
+ * - `inactiva`: "La clave (CUIT/CUIL) consultada se encuentra INACTIVA".
21
+ * - `id_invalido`: "El Id de la persona no es valido".
22
+ * - `no_autorizado`: "No autorizado, par token/sign invalido.", "Falta token
23
+ * y/o sign.", "Debe enviar la CUIT representada", "Este token no le permite
24
+ * actuar en representacion de la CUIT ...".
25
+ * - `otro`: cualquier otro error de negocio.
26
+ */
27
+ export type PadronErrorReason = 'inexistente' | 'inactiva' | 'id_invalido' | 'no_autorizado' | 'otro';
28
+ /**
29
+ * Error de negocio de Padrón (CUIT inexistente, clave inactiva, token no
30
+ * autorizado, etc.). ARCA los informa como SOAP Fault: el SDK los convierte en
31
+ * este error con un `reason` tipado. El `ArcaSoapError` original queda en
32
+ * `cause` y el texto de ARCA en `errors[0].msg`. No se reintentan.
14
33
  */
15
34
  export declare class ArcaPadronServiceError extends ArcaServiceError {
16
35
  static readonly code: string;
17
- constructor(message: string, errors: {
18
- code: number;
19
- msg: string;
20
- }[]);
36
+ readonly reason: PadronErrorReason;
37
+ constructor(message: string, errors: ServiceErrorDetail[], options?: {
38
+ reason?: PadronErrorReason;
39
+ cause?: unknown;
40
+ });
21
41
  }
42
+ /** Motivo de un mensaje de error de negocio de Padrón, o `undefined` si no es uno conocido. */
43
+ export declare function padronErrorReason(message: string): PadronErrorReason | undefined;
44
+ /**
45
+ * Convierte un SOAP Fault de negocio conocido en `ArcaPadronServiceError`.
46
+ * Cualquier otro error (transporte, timeout, Fault desconocido) se devuelve
47
+ * sin cambios.
48
+ */
49
+ export declare function toPadronError(err: unknown, method: string): unknown;
22
50
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACzH,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEnE;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,gBAAyB,IAAI,EAAE,MAAM,CAAuB;gBAEhD,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,gBAAyB,IAAI,EAAE,MAAM,CAA+B;gBAExD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE;CAIrE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAiB,MAAM,sBAAsB,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,gBAAyB,IAAI,EAAE,MAAM,CAAuB;gBAEhD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe,GAAG,MAAM,CAAC;AAEtG;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,gBAAyB,IAAI,EAAE,MAAM,CAA+B;IACpE,SAAgB,MAAM,EAAE,iBAAiB,CAAC;gBAGxC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,EAAE,EAC5B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,iBAAiB,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAM5D;AASD,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOnE"}