@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
@@ -50,13 +50,15 @@ class ArcaPadron {
50
50
  constructor(config) {
51
51
  const isProduction = config.production ?? false;
52
52
  const env = isProduction ? 'production' : 'testing';
53
- this.cuit = config.cuit;
53
+ this.cuit = (0, arca_common_1.validateCuit)(config.cuit);
54
54
  this.signal = config.signal;
55
55
  const onEvent = config.onEvent;
56
56
  const soapOptions = {
57
57
  timeout: config.timeout,
58
58
  retries: config.retries,
59
59
  retryDelayMs: config.retryDelayMs,
60
+ fetch: config.fetch,
61
+ legacyTls: config.legacyTls,
60
62
  };
61
63
  this.wsaa =
62
64
  config.wsaa ??
@@ -64,6 +66,8 @@ class ArcaPadron {
64
66
  cert: config.cert,
65
67
  key: config.key,
66
68
  production: isProduction,
69
+ endpoint: config.endpoints?.wsaa,
70
+ tokenTTLMinutes: config.tokenTTLMinutes,
67
71
  timeout: config.timeout,
68
72
  retries: config.retries,
69
73
  retryDelayMs: config.retryDelayMs,
@@ -71,24 +75,29 @@ class ArcaPadron {
71
75
  ticketStorage: config.ticketStorage,
72
76
  clockOffsetMs: config.clockOffsetMs,
73
77
  autoClockSkew: config.autoClockSkew,
78
+ loginErrorCooldownMs: config.loginErrorCooldownMs,
79
+ fetch: config.fetch,
80
+ legacyTls: config.legacyTls,
74
81
  });
75
82
  const clientConfig = (svc) => ({
76
- endpoint: svc[env],
77
- namespace: svc.namespace,
83
+ endpoint: config.endpoints?.[svc] ?? constants_js_1.ENDPOINTS[svc][env],
84
+ namespace: constants_js_1.ENDPOINTS[svc].namespace,
78
85
  soapOptions,
79
86
  onEvent,
80
87
  });
81
- this.a5 = new padron_a5_js_1.PadronA5Client(clientConfig(constants_js_1.ENDPOINTS.a5));
82
- this.a4 = new padron_a4_js_1.PadronA4Client(clientConfig(constants_js_1.ENDPOINTS.a4));
83
- this.a10 = new padron_a10_js_1.PadronA10Client(clientConfig(constants_js_1.ENDPOINTS.a10));
84
- this.a13 = new padron_a13_js_1.PadronA13Client(clientConfig(constants_js_1.ENDPOINTS.a13));
85
- this.a100 = new padron_a100_js_1.PadronA100Client(clientConfig(constants_js_1.ENDPOINTS.a100));
88
+ this.a5 = new padron_a5_js_1.PadronA5Client(clientConfig('a5'));
89
+ this.a4 = new padron_a4_js_1.PadronA4Client(clientConfig('a4'));
90
+ this.a10 = new padron_a10_js_1.PadronA10Client(clientConfig('a10'));
91
+ this.a13 = new padron_a13_js_1.PadronA13Client(clientConfig('a13'));
92
+ this.a100 = new padron_a100_js_1.PadronA100Client(clientConfig('a100'));
86
93
  }
87
94
  /**
88
- * Constancia de inscripción (ws_sr_constancia_inscripcion, ex Padrón A5):
89
- * datos generales, domicilio fiscal, impuestos del régimen general y
90
- * monotributo. Combinar con `condicionIvaDesdePadron` para facturar.
91
- * @param cuit - CUIT of the taxpayer to query
95
+ * Constancia de inscripción (ws_sr_constancia_inscripcion, ex Padrón A5,
96
+ * `getPersona_v2`): datos generales, domicilio fiscal, impuestos del régimen
97
+ * general y monotributo. Combinar con `condicionIvaDesdePadron` para facturar.
98
+ * @param cuit - CUIT a consultar (con o sin guiones)
99
+ * @throws ArcaValidationError si la CUIT es inválida (dígito verificador)
100
+ * @throws ArcaPadronServiceError si ARCA informa la CUIT inexistente, inactiva, etc.
92
101
  */
93
102
  async getConstanciaInscripcion(cuit, call) {
94
103
  const opts = this.opts(call);
@@ -96,9 +105,18 @@ class ArcaPadron {
96
105
  return this.a5.getPersona(auth, cuit, opts);
97
106
  }
98
107
  /**
99
- * Get full taxpayer data (Padrón A4) for a given CUIT.
100
- * Authenticates automatically via WSAA.
101
- * @param cuit - CUIT of the taxpayer to query
108
+ * Constancias de inscripción de hasta 250 CUITs en una llamada
109
+ * (`getPersonaList_v2`). Las CUITs inexistentes vuelven con `errorConstancia`
110
+ * ("No existe persona con ese Id") en lugar de hacer fallar la consulta.
111
+ */
112
+ async getConstanciasInscripcion(cuits, call) {
113
+ const opts = this.opts(call);
114
+ const auth = await this.getAuth(constants_js_1.ENDPOINTS.a5.serviceId, opts);
115
+ return this.a5.getPersonaList(auth, cuits, opts);
116
+ }
117
+ /**
118
+ * Datos completos de un contribuyente (Padrón A4).
119
+ * @param cuit - CUIT/CUIL a consultar (con o sin guiones)
102
120
  */
103
121
  async getPersona(cuit, call) {
104
122
  const opts = this.opts(call);
@@ -106,9 +124,8 @@ class ArcaPadron {
106
124
  return this.a4.getPersona(auth, cuit, opts);
107
125
  }
108
126
  /**
109
- * Get basic taxpayer data (Padrón A10) for a given CUIT.
110
- * Authenticates automatically via WSAA.
111
- * @param cuit - CUIT of the taxpayer to query
127
+ * Datos básicos de un contribuyente (Padrón A10).
128
+ * @param cuit - CUIT/CUIL a consultar (con o sin guiones)
112
129
  */
113
130
  async getPersonaBasic(cuit, call) {
114
131
  const opts = this.opts(call);
@@ -116,17 +133,27 @@ class ArcaPadron {
116
133
  return this.a10.getPersona(auth, cuit, opts);
117
134
  }
118
135
  /**
119
- * Get basic taxpayer data (Padrón A13) for a given CUIT.
120
- * @param cuit - CUIT of the taxpayer to query
136
+ * Datos básicos de un contribuyente (Padrón A13, `getPersona`). Con la clave
137
+ * inactiva ARCA responde con error (`reason: 'inactiva'`): ver `getPersonaA13V2`.
138
+ * @param cuit - CUIT/CUIL a consultar (con o sin guiones)
121
139
  */
122
140
  async getPersonaA13(cuit, call) {
123
141
  const opts = this.opts(call);
124
142
  const auth = await this.getAuth(constants_js_1.ENDPOINTS.a13.serviceId, opts);
125
143
  return this.a13.getPersona(auth, cuit, opts);
126
144
  }
145
+ /**
146
+ * Datos básicos de un contribuyente (Padrón A13, `getPersonaV2`): responde
147
+ * también si la clave está INACTIVA (manual A13 v1.4).
148
+ */
149
+ async getPersonaA13V2(cuit, call) {
150
+ const opts = this.opts(call);
151
+ const auth = await this.getAuth(constants_js_1.ENDPOINTS.a13.serviceId, opts);
152
+ return this.a13.getPersonaV2(auth, cuit, opts);
153
+ }
127
154
  /**
128
155
  * CUITs/CUILs asociados a un número de documento (Padrón A13).
129
- * @param documento - Número de documento (DNI)
156
+ * @param documento - Número de documento (DNI); se aceptan puntos y espacios
130
157
  */
131
158
  async getIdPersonaListByDocumento(documento, call) {
132
159
  const opts = this.opts(call);
@@ -134,9 +161,8 @@ class ArcaPadron {
134
161
  return this.a13.getIdPersonaListByDocumento(auth, documento, opts);
135
162
  }
136
163
  /**
137
- * Get a parameter table (Padrón A100) by collection name.
138
- * Authenticates automatically via WSAA.
139
- * @param collection - Name of the collection (e.g. CollectionName.PROVINCIA, CollectionName.TIPO_DOCUMENTO)
164
+ * Tabla de parámetros (Padrón A100) por nombre de colección.
165
+ * @param collection - Nombre de la colección (ej: CollectionName.PROVINCIA)
140
166
  */
141
167
  async getParametros(collection, call) {
142
168
  const opts = this.opts(call);
@@ -144,12 +170,20 @@ class ArcaPadron {
144
170
  return this.a100.getParameterCollectionByName(auth, collection, opts);
145
171
  }
146
172
  /**
147
- * Health check for the Padrón services.
148
- * Does not require authentication.
173
+ * Estado de los servicios de Padrón (`dummy`, sin autenticación). Consulta
174
+ * todos en paralelo y devuelve el resultado de cada uno por separado: un
175
+ * servicio caído no oculta el estado de los demás.
176
+ *
177
+ * @example
178
+ * ```ts
179
+ * const s = await padron.status();
180
+ * if (s.a4.status === 'fulfilled') console.log(s.a4.value.appserver);
181
+ * else console.error(s.a4.reason);
182
+ * ```
149
183
  */
150
184
  async status(call) {
151
185
  const opts = this.opts(call);
152
- const [a5, a4, a10, a13, a100] = await Promise.all([
186
+ const [a5, a4, a10, a13, a100] = await Promise.allSettled([
153
187
  this.a5.dummy(opts),
154
188
  this.a4.dummy(opts),
155
189
  this.a10.dummy(opts),
@@ -1 +1 @@
1
- {"version":3,"file":"arca-padron.js","sourceRoot":"","sources":["../../src/arca-padron.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arca-padron.js","sourceRoot":"","sources":["../../src/arca-padron.ts"],"names":[],"mappings":"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"}
@@ -1,32 +1,41 @@
1
- import type { ArcaEvent, CallOptions, SoapCallOptions, ServerStatus } from '@ramiidv/arca-common';
1
+ import type { ArcaEvent, CallOptions, ServerStatus, SoapCallOptions } from '@ramiidv/arca-common';
2
2
  import type { WsAuth } from './types.js';
3
+ /** Opciones de transporte que se pasan a cada llamada SOAP. */
4
+ export type PadronSoapOptions = Pick<SoapCallOptions, 'timeout' | 'retries' | 'retryDelayMs' | 'fetch' | 'legacyTls'>;
3
5
  /** Shared configuration for all Padrón service clients. */
4
6
  export interface PadronClientConfig {
5
7
  /** SOAP endpoint URL */
6
8
  endpoint: string;
7
9
  /** SOAP namespace */
8
10
  namespace: string;
9
- /** SOAP call options (retries, timeout) */
10
- soapOptions?: Pick<SoapCallOptions, 'timeout' | 'retries' | 'retryDelayMs'>;
11
+ /** Opciones de transporte (timeout, reintentos, fetch, TLS legacy) */
12
+ soapOptions?: PadronSoapOptions;
11
13
  /** Optional event callback */
12
14
  onEvent?: (event: ArcaEvent) => void;
13
15
  }
14
16
  /**
15
- * Abstract base class for Padrón web service clients.
16
- * Provides shared constructor logic and health-check method.
17
+ * Base de los clientes de Padrón.
17
18
  *
18
19
  * Los WS de Padrón declaran los parámetros sin namespace
19
- * (`elementFormDefault="unqualified"`): `afipSoapCall` de arca-common prefija
20
- * el método y deja los parámetros sin namespace. Todas las consultas se
21
- * reintentan ante errores transitorios.
20
+ * (`elementFormDefault="unqualified"`) y `soapAction=""`: `afipSoapCall` de
21
+ * arca-common prefija el método y deja los parámetros sin namespace. Todas las
22
+ * operaciones son consultas: se reintentan ante errores transitorios (nunca
23
+ * ante un SOAP Fault). Los Faults de negocio conocidos (CUIT inexistente,
24
+ * clave inactiva, token no autorizado...) se lanzan como `ArcaPadronServiceError`.
25
+ *
26
+ * Las respuestas se parsean con `parseNumbers: false`: todos los valores llegan
27
+ * como string tal cual los envía ARCA, y `mapping.ts` convierte explícitamente
28
+ * los campos numéricos del WSDL (`optNumber`/`reqNumber`). Así los `xs:string`
29
+ * con contenido numérico (`datoAdicional`, `codPostal`, `piso`, los campos del
30
+ * A100...) no pierden ceros ni decimales (`"10.50"`, `"1E3"`).
22
31
  */
23
32
  export declare abstract class BasePadronClient {
24
33
  protected readonly endpoint: string;
25
34
  protected readonly namespace: string;
26
- protected readonly soapOptions?: Pick<SoapCallOptions, 'timeout' | 'retries' | 'retryDelayMs'>;
35
+ protected readonly soapOptions?: PadronSoapOptions;
27
36
  protected readonly onEvent?: (event: ArcaEvent) => void;
28
37
  constructor(config: PadronClientConfig);
29
- /** Llama a un método del servicio. */
38
+ /** Llama a un método del servicio y traduce los Faults de negocio. */
30
39
  protected call(method: string, params: Record<string, unknown>, opts?: CallOptions): Promise<Record<string, unknown>>;
31
40
  /** Parámetros de autenticación en el orden del WSDL: token, sign, cuitRepresentada. */
32
41
  protected authParams(auth: WsAuth): Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../src/base-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC,CAAC;IAC5E,8BAA8B;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,8BAAsB,gBAAgB;IACpC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC,CAAC;IAC/F,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;gBAE5C,MAAM,EAAE,kBAAkB;IAOtC,sCAAsC;IACtC,SAAS,CAAC,IAAI,CACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAQnC,uFAAuF;IACvF,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQ3D,qCAAqC;IAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CASvD"}
1
+ {"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../src/base-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC;AAEtH,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC;AAED;;;;;;;;;;;;;;;GAeG;AACH,8BAAsB,gBAAgB;IACpC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IACnD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;gBAE5C,MAAM,EAAE,kBAAkB;IAOtC,sEAAsE;cACtD,IAAI,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAcnC,uFAAuF;IACvF,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQ3D,qCAAqC;IAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CAQvD"}
@@ -1,15 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BasePadronClient = void 0;
4
- const soap_client_js_1 = require("./soap-client.js");
4
+ const arca_common_1 = require("@ramiidv/arca-common");
5
+ const errors_js_1 = require("./errors.js");
6
+ const mapping_js_1 = require("./mapping.js");
5
7
  /**
6
- * Abstract base class for Padrón web service clients.
7
- * Provides shared constructor logic and health-check method.
8
+ * Base de los clientes de Padrón.
8
9
  *
9
10
  * Los WS de Padrón declaran los parámetros sin namespace
10
- * (`elementFormDefault="unqualified"`): `afipSoapCall` de arca-common prefija
11
- * el método y deja los parámetros sin namespace. Todas las consultas se
12
- * reintentan ante errores transitorios.
11
+ * (`elementFormDefault="unqualified"`) y `soapAction=""`: `afipSoapCall` de
12
+ * arca-common prefija el método y deja los parámetros sin namespace. Todas las
13
+ * operaciones son consultas: se reintentan ante errores transitorios (nunca
14
+ * ante un SOAP Fault). Los Faults de negocio conocidos (CUIT inexistente,
15
+ * clave inactiva, token no autorizado...) se lanzan como `ArcaPadronServiceError`.
16
+ *
17
+ * Las respuestas se parsean con `parseNumbers: false`: todos los valores llegan
18
+ * como string tal cual los envía ARCA, y `mapping.ts` convierte explícitamente
19
+ * los campos numéricos del WSDL (`optNumber`/`reqNumber`). Así los `xs:string`
20
+ * con contenido numérico (`datoAdicional`, `codPostal`, `piso`, los campos del
21
+ * A100...) no pierden ceros ni decimales (`"10.50"`, `"1E3"`).
13
22
  */
14
23
  class BasePadronClient {
15
24
  endpoint;
@@ -22,29 +31,36 @@ class BasePadronClient {
22
31
  this.soapOptions = config.soapOptions;
23
32
  this.onEvent = config.onEvent;
24
33
  }
25
- /** Llama a un método del servicio. */
26
- call(method, params, opts) {
27
- return (0, soap_client_js_1.afipSoapCall)(this.endpoint, this.namespace, method, params, {
28
- ...this.soapOptions,
29
- onEvent: this.onEvent,
30
- signal: opts?.signal,
31
- });
34
+ /** Llama a un método del servicio y traduce los Faults de negocio. */
35
+ async call(method, params, opts) {
36
+ try {
37
+ return await (0, arca_common_1.afipSoapCall)(this.endpoint, this.namespace, method, params, {
38
+ ...this.soapOptions,
39
+ parseNumbers: false,
40
+ kind: 'consulta',
41
+ onEvent: this.onEvent,
42
+ signal: opts?.signal,
43
+ });
44
+ }
45
+ catch (err) {
46
+ throw (0, errors_js_1.toPadronError)(err, method);
47
+ }
32
48
  }
33
49
  /** Parámetros de autenticación en el orden del WSDL: token, sign, cuitRepresentada. */
34
50
  authParams(auth) {
35
51
  return {
36
52
  token: auth.Token,
37
53
  sign: auth.Sign,
38
- cuitRepresentada: auth.CuitRepresentada,
54
+ cuitRepresentada: (0, arca_common_1.validateCuit)(auth.CuitRepresentada),
39
55
  };
40
56
  }
41
57
  /** Health check for this service. */
42
58
  async dummy(opts) {
43
59
  const result = await this.call('dummy', {}, opts);
44
60
  return {
45
- appserver: (result['appserver'] ?? ''),
46
- dbserver: (result['dbserver'] ?? ''),
47
- authserver: (result['authserver'] ?? ''),
61
+ appserver: (0, mapping_js_1.reqString)(result['appserver'], 'dummy.appserver'),
62
+ dbserver: (0, mapping_js_1.reqString)(result['dbserver'], 'dummy.dbserver'),
63
+ authserver: (0, mapping_js_1.reqString)(result['authserver'], 'dummy.authserver'),
48
64
  };
49
65
  }
50
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/base-client.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAgBhD;;;;;;;;GAQG;AACH,MAAsB,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,IAAA,6BAAY,EAAC,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;AA7CD,4CA6CC"}
1
+ {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/base-client.ts"],"names":[],"mappings":";;;AAAA,sDAAkE;AAOlE,2CAA4C;AAC5C,6CAAyC;AAkBzC;;;;;;;;;;;;;;;GAeG;AACH,MAAsB,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,IAAA,0BAAY,EAAC,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,IAAA,yBAAa,EAAC,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,IAAA,0BAAY,EAAC,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,IAAA,sBAAS,EAAC,MAAM,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;YAC5D,QAAQ,EAAE,IAAA,sBAAS,EAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;YACzD,UAAU,EAAE,IAAA,sBAAS,EAAC,MAAM,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;SAChE,CAAC;IACJ,CAAC;CACF;AAlDD,4CAkDC"}
@@ -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"}
@@ -5,58 +5,94 @@ const arca_common_1 = require("@ramiidv/arca-common");
5
5
  const constants_js_1 = require("./constants.js");
6
6
  /*
7
7
  * Fuentes:
8
- * - Manual del desarrollador ws_sr_constancia_inscripcion v4.1: impuesto 20 =
9
- * MONOTRIBUTO (datosMonotributo), impuesto 30 = IVA (datosRegimenGeneral),
10
- * estadoImpuesto "AC" = activo; las categorías 61, 99 y 100 son de
11
- * monotributo social ("B MONOTRIBUTO SOCIAL ...").
12
- * - IVA exento (32) e IVA no alcanzado (34) no figuran en ese manual: se
13
- * reconocen por id o por la descripción del impuesto. También se reconoce el
14
- * impuesto 30 con estado SUPA "EX" (exento) o "NA" (no alcanzado).
15
- * - Valores de CondicionIva: FEParamGetCondicionIvaReceptor (WSFEv1).
8
+ * - Manual ws_sr_constancia_inscripcion v4.1: impuesto 20 = MONOTRIBUTO
9
+ * (datosMonotributo), impuesto 30 = IVA (datosRegimenGeneral), estadoImpuesto
10
+ * "AC" = activo. Categorías de monotributo (anexo 5.3): 61, 99, 100
11
+ * "B MONOTRIBUTO SOCIAL ..."; 101 a 104 "D/E 2/3 SOCIOS PROY. SERVICIOS /
12
+ * PRODUCTIVO" (proyectos productivos de efectores sociales, Ley 25.865: también
13
+ * monotributo social); 98 "B ASOCIADO COOPERATIVA" (monotributo común: no
14
+ * es necesariamente efector social).
15
+ * - Manual ws_sr_padron_a4 v1.3 §5.3 (TipoEstado): ACTIVO, ACTIVO EN TRAMITE,
16
+ * BAJA PROVISORIA, BAJA DEFINITIVA, EXENTO, EXENTO EN TRAMITE, NO APORTANTE.
17
+ * La constancia informa el id del estado (`estadoImpuesto`, ej: "AC"); solo
18
+ * "AC" figura en los manuales. Las demás abreviaturas que se reconocen son
19
+ * las iniciales de TipoEstado (EX, BP, BD, NA = NO APORTANTE). "NO APORTANTE"
20
+ * no es "IVA no alcanzado": no se mapea a ninguna condición.
21
+ * - IVA exento (32) e IVA no alcanzado (34) no figuran en los manuales: se
22
+ * reconocen por id o por la descripción del impuesto.
23
+ * - Valores de CondicionIva: FEParamGetCondicionIvaReceptor (WSFEv1, RG 5616).
16
24
  */
17
- const CATEGORIAS_MONOTRIBUTO_SOCIAL = new Set([61, 99, 100]);
18
- function activo(estado) {
19
- return !estado || /^(AC|ACTIVO)$/i.test(estado.trim());
25
+ const CATEGORIAS_MONOTRIBUTO_SOCIAL = new Set([61, 99, 100, 101, 102, 103, 104]);
26
+ const ABREVIATURAS = {
27
+ AC: 'ACTIVO',
28
+ EX: 'EXENTO',
29
+ BP: 'BAJA PROVISORIA',
30
+ BD: 'BAJA DEFINITIVA',
31
+ NA: 'NO APORTANTE',
32
+ };
33
+ /** Normaliza el estado de un impuesto (palabras de TipoEstado o abreviatura SUPA). `''` si no vino. */
34
+ function normalizarEstado(estado) {
35
+ const e = (estado ?? '').trim().toUpperCase().normalize('NFD').replace(/[̀-ͯ]/g, '').replace(/\s+/g, ' ');
36
+ return ABREVIATURAS[e] ?? e;
37
+ }
38
+ /** Activo: ACTIVO o ACTIVO EN TRAMITE. Sin estado (respuestas anteriores a la v3.6 de la constancia) cuenta como activo. */
39
+ function esActivo(estado) {
40
+ return estado === '' || estado === 'ACTIVO' || estado === 'ACTIVO EN TRAMITE';
41
+ }
42
+ function esExento(estado) {
43
+ return estado === 'EXENTO' || estado === 'EXENTO EN TRAMITE';
20
44
  }
21
45
  function esA5(persona) {
22
46
  return Array.isArray(persona.impuestos);
23
47
  }
48
+ function impuesto(id, descripcion, estadoRaw) {
49
+ const estado = normalizarEstado(estadoRaw);
50
+ return { id, descripcion: descripcion ?? '', estado, activo: esActivo(estado) };
51
+ }
24
52
  function impuestosDe(persona) {
25
- if (esA5(persona)) {
26
- return persona.impuestos.map((i) => ({
27
- id: i.idImpuesto,
28
- descripcion: i.descripcionImpuesto ?? '',
29
- estado: (i.estadoImpuesto ?? '').trim().toUpperCase(),
30
- activo: activo(i.estadoImpuesto),
31
- }));
32
- }
33
- return (persona.impuesto ?? []).map((i) => ({
34
- id: i.idImpuesto,
35
- descripcion: i.descripcionImpuesto ?? '',
36
- estado: (i.estado ?? '').trim().toUpperCase(),
37
- activo: activo(i.estado),
38
- }));
53
+ if (esA5(persona))
54
+ return persona.impuestos.map((i) => impuesto(i.idImpuesto, i.descripcionImpuesto, i.estadoImpuesto));
55
+ return (persona.impuesto ?? []).map((i) => impuesto(i.idImpuesto, i.descripcionImpuesto, i.estado));
39
56
  }
40
57
  function categoriaMonotributo(persona) {
41
58
  if (esA5(persona)) {
42
59
  const c = persona.monotributo?.categoria;
43
60
  return c ? { id: c.idCategoria, descripcion: c.descripcionCategoria ?? '' } : undefined;
44
61
  }
45
- const c = (persona.categoria ?? []).find((x) => x.idImpuesto === constants_js_1.ImpuestoId.MONOTRIBUTO && activo(x.estado));
62
+ const c = (persona.categoria ?? []).find((x) => x.idImpuesto === constants_js_1.ImpuestoId.MONOTRIBUTO && esActivo(normalizarEstado(x.estado)));
46
63
  return c ? { id: c.idCategoria, descripcion: c.descripcionCategoria ?? '' } : undefined;
47
64
  }
65
+ /** Errores que informó la constancia (régimen general / monotributo), para el motivo. */
66
+ function erroresConstancia(persona) {
67
+ if (!esA5(persona))
68
+ return [];
69
+ const out = [];
70
+ const add = (nombre, e) => {
71
+ if (!e)
72
+ return;
73
+ const detalle = e.error.length > 0 ? e.error.join('; ') : (e.mensaje ?? 'sin detalle');
74
+ out.push(`${nombre}: ${detalle}`);
75
+ };
76
+ add('régimen general', persona.errorRegimenGeneral);
77
+ add('monotributo', persona.errorMonotributo);
78
+ return out;
79
+ }
48
80
  /**
49
81
  * Determina la condición frente al IVA de un contribuyente a partir del padrón
50
82
  * (constancia de inscripción / A5, o A4), para usarla como `condicionIva` al
51
83
  * facturarle.
52
84
  *
53
- * - Monotributo activo (impuesto 20 o categoría de monotributo) → MONOTRIBUTISTA,
54
- * o MONOTRIBUTO_SOCIAL / MONOTRIBUTO_INDEPENDIENTE_PROMOVIDO según la categoría.
55
- * - IVA activo (impuesto 30) → RESPONSABLE_INSCRIPTO.
56
- * - IVA exento (32) → EXENTO. IVA no alcanzado (34) → IVA_NO_ALCANZADO.
85
+ * - Monotributo activo (impuesto 20 activo; o, si el impuesto 20 no figura, la
86
+ * categoría de monotributo) → MONOTRIBUTISTA, o MONOTRIBUTO_SOCIAL /
87
+ * MONOTRIBUTO_INDEPENDIENTE_PROMOVIDO según la categoría. Un impuesto 20 en
88
+ * baja no cuenta aunque haya categoría.
89
+ * - IVA activo (impuesto 30, ACTIVO o ACTIVO EN TRAMITE) → RESPONSABLE_INSCRIPTO.
90
+ * - IVA (30) en estado EXENTO / EXENTO EN TRAMITE, o impuesto 32 → EXENTO.
91
+ * - Impuesto 34 → IVA_NO_ALCANZADO.
57
92
  * - Si no figura ninguno, devuelve `condicionIva: null`: el padrón no alcanza
58
93
  * para decidir (puede ser consumidor final o sujeto no categorizado según la
59
- * operación). No adivina.
94
+ * operación). Si ARCA informó errores de la constancia (`errorConstancia`,
95
+ * `errorRegimenGeneral`, `errorMonotributo`), el motivo los incluye. No adivina.
60
96
  *
61
97
  * Es una función pura: no consulta ARCA.
62
98
  *
@@ -69,11 +105,15 @@ function categoriaMonotributo(persona) {
69
105
  function condicionIvaDesdePadron(persona) {
70
106
  const impuestos = impuestosDe(persona);
71
107
  const tiene = (pred) => impuestos.find((i) => i.activo && pred(i));
72
- const advertencia = persona.estadoClave && persona.estadoClave.toUpperCase() !== 'ACTIVO'
108
+ const errores = erroresConstancia(persona);
109
+ const notaErrores = errores.length > 0 ? ` ARCA informó errores en la constancia (${errores.join(' | ')}).` : '';
110
+ const avisoClave = persona.estadoClave && persona.estadoClave.toUpperCase() !== 'ACTIVO'
73
111
  ? ` Atención: la CUIT tiene estado ${persona.estadoClave}.`
74
112
  : '';
113
+ const advertencia = avisoClave + notaErrores;
75
114
  const categoria = categoriaMonotributo(persona);
76
- const monotributo = tiene((i) => i.id === constants_js_1.ImpuestoId.MONOTRIBUTO) ?? (categoria ? true : undefined);
115
+ const impuesto20 = impuestos.find((i) => i.id === constants_js_1.ImpuestoId.MONOTRIBUTO);
116
+ const monotributo = impuesto20 ? impuesto20.activo : categoria !== undefined;
77
117
  if (monotributo) {
78
118
  const desc = categoria ? ` (categoría ${categoria.id} - ${categoria.descripcion.trim()})` : '';
79
119
  if (categoria && (CATEGORIAS_MONOTRIBUTO_SOCIAL.has(categoria.id) || /MONOTRIBUTO SOCIAL/i.test(categoria.descripcion))) {
@@ -90,12 +130,12 @@ function condicionIvaDesdePadron(persona) {
90
130
  if (tiene((i) => i.id === constants_js_1.ImpuestoId.IVA_RESPONSABLE_INSCRIPTO)) {
91
131
  return { condicionIva: arca_common_1.CondicionIva.RESPONSABLE_INSCRIPTO, motivo: `Inscripto en IVA (impuesto 30).${advertencia}` };
92
132
  }
93
- const iva = impuestos.find((i) => i.id === constants_js_1.ImpuestoId.IVA_RESPONSABLE_INSCRIPTO);
94
- if (iva?.estado === 'EX') {
95
- return { condicionIva: arca_common_1.CondicionIva.EXENTO, motivo: `IVA (impuesto 30) en estado exento.${advertencia}` };
96
- }
97
- if (iva?.estado === 'NA') {
98
- return { condicionIva: arca_common_1.CondicionIva.IVA_NO_ALCANZADO, motivo: `IVA (impuesto 30) en estado no alcanzado.${advertencia}` };
133
+ const ivaExento = impuestos.find((i) => i.id === constants_js_1.ImpuestoId.IVA_RESPONSABLE_INSCRIPTO && esExento(i.estado));
134
+ if (ivaExento) {
135
+ return {
136
+ condicionIva: arca_common_1.CondicionIva.EXENTO,
137
+ motivo: `IVA (impuesto 30) en estado ${ivaExento.estado}.${advertencia}`,
138
+ };
99
139
  }
100
140
  if (tiene((i) => i.id === constants_js_1.ImpuestoId.IVA_EXENTO || /IVA\s+EXENTO/i.test(i.descripcion))) {
101
141
  return { condicionIva: arca_common_1.CondicionIva.EXENTO, motivo: `IVA exento (impuesto 32).${advertencia}` };
@@ -109,6 +149,13 @@ function condicionIvaDesdePadron(persona) {
109
149
  motivo: `ARCA no emitió la constancia: ${persona.errorConstancia.error.join('; ')}.${advertencia}`,
110
150
  };
111
151
  }
152
+ if (errores.length > 0) {
153
+ return {
154
+ condicionIva: null,
155
+ motivo: `No se puede determinar: ARCA no informó datos de ${errores.map((e) => e.split(':')[0]).join(' ni de ')} ` +
156
+ `(${errores.join(' | ')}).${avisoClave}`,
157
+ };
158
+ }
112
159
  return {
113
160
  condicionIva: null,
114
161
  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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"}