@ramiidv/arca-padron 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/README.md +106 -21
- package/dist/cjs/arca-padron.d.ts +98 -0
- package/dist/cjs/arca-padron.d.ts.map +1 -0
- package/dist/cjs/arca-padron.js +177 -0
- package/dist/cjs/arca-padron.js.map +1 -0
- package/dist/{base-client.d.ts → cjs/base-client.d.ts} +12 -2
- package/dist/cjs/base-client.d.ts.map +1 -0
- package/dist/cjs/base-client.js +52 -0
- package/dist/cjs/base-client.js.map +1 -0
- package/dist/cjs/condicion-iva.d.ts +24 -0
- package/dist/cjs/condicion-iva.d.ts.map +1 -0
- package/dist/cjs/condicion-iva.js +119 -0
- package/dist/cjs/condicion-iva.js.map +1 -0
- package/dist/{constants.d.ts → cjs/constants.d.ts} +21 -3
- package/dist/{constants.d.ts.map → cjs/constants.d.ts.map} +1 -1
- package/dist/cjs/constants.js +113 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/{errors.d.ts → cjs/errors.d.ts} +3 -1
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +36 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/index.d.ts +16 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +56 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/mapping.d.ts +9 -0
- package/dist/cjs/mapping.d.ts.map +1 -0
- package/dist/cjs/mapping.js +14 -0
- package/dist/cjs/mapping.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/{padron-a10.d.ts → cjs/padron-a10.d.ts} +3 -1
- package/dist/cjs/padron-a10.d.ts.map +1 -0
- package/dist/cjs/padron-a10.js +73 -0
- package/dist/cjs/padron-a10.js.map +1 -0
- package/dist/{padron-a100.d.ts → cjs/padron-a100.d.ts} +2 -1
- package/dist/cjs/padron-a100.d.ts.map +1 -0
- package/dist/cjs/padron-a100.js +38 -0
- package/dist/cjs/padron-a100.js.map +1 -0
- package/dist/cjs/padron-a13.d.ts +24 -0
- package/dist/cjs/padron-a13.d.ts.map +1 -0
- package/dist/cjs/padron-a13.js +80 -0
- package/dist/cjs/padron-a13.js.map +1 -0
- package/dist/{padron-a4.d.ts → cjs/padron-a4.d.ts} +3 -1
- package/dist/cjs/padron-a4.d.ts.map +1 -0
- package/dist/cjs/padron-a4.js +173 -0
- package/dist/cjs/padron-a4.js.map +1 -0
- package/dist/cjs/padron-a5.d.ts +24 -0
- package/dist/cjs/padron-a5.d.ts.map +1 -0
- package/dist/cjs/padron-a5.js +156 -0
- package/dist/cjs/padron-a5.js.map +1 -0
- package/dist/cjs/soap-client.d.ts.map +1 -0
- package/dist/cjs/soap-client.js +13 -0
- package/dist/cjs/soap-client.js.map +1 -0
- package/dist/cjs/types.d.ts +346 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/wsaa.d.ts.map +1 -0
- package/dist/cjs/wsaa.js +6 -0
- package/dist/cjs/wsaa.js.map +1 -0
- package/dist/esm/arca-padron.d.ts +98 -0
- package/dist/esm/arca-padron.d.ts.map +1 -0
- package/dist/esm/arca-padron.js +173 -0
- package/dist/esm/arca-padron.js.map +1 -0
- package/dist/esm/base-client.d.ts +36 -0
- package/dist/esm/base-client.d.ts.map +1 -0
- package/dist/esm/base-client.js +48 -0
- package/dist/esm/base-client.js.map +1 -0
- package/dist/esm/condicion-iva.d.ts +24 -0
- package/dist/esm/condicion-iva.d.ts.map +1 -0
- package/dist/esm/condicion-iva.js +116 -0
- package/dist/esm/condicion-iva.js.map +1 -0
- package/dist/esm/constants.d.ts +97 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/{constants.js → esm/constants.js} +21 -3
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/errors.d.ts +22 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/{errors.js → esm/errors.js} +3 -1
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/index.d.ts +16 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/mapping.d.ts +9 -0
- package/dist/esm/mapping.d.ts.map +1 -0
- package/dist/esm/mapping.js +8 -0
- package/dist/esm/mapping.js.map +1 -0
- package/dist/esm/padron-a10.d.ts +18 -0
- package/dist/esm/padron-a10.d.ts.map +1 -0
- package/dist/{padron-a10.js → esm/padron-a10.js} +4 -9
- package/dist/esm/padron-a10.js.map +1 -0
- package/dist/esm/padron-a100.d.ts +16 -0
- package/dist/esm/padron-a100.d.ts.map +1 -0
- package/dist/{padron-a100.js → esm/padron-a100.js} +3 -9
- package/dist/esm/padron-a100.js.map +1 -0
- package/dist/esm/padron-a13.d.ts +24 -0
- package/dist/esm/padron-a13.d.ts.map +1 -0
- package/dist/esm/padron-a13.js +75 -0
- package/dist/esm/padron-a13.js.map +1 -0
- package/dist/esm/padron-a4.d.ts +18 -0
- package/dist/esm/padron-a4.d.ts.map +1 -0
- package/dist/{padron-a4.js → esm/padron-a4.js} +4 -9
- package/dist/esm/padron-a4.js.map +1 -0
- package/dist/esm/padron-a5.d.ts +24 -0
- package/dist/esm/padron-a5.d.ts.map +1 -0
- package/dist/esm/padron-a5.js +151 -0
- package/dist/esm/padron-a5.js.map +1 -0
- package/dist/esm/soap-client.d.ts +2 -0
- package/dist/esm/soap-client.d.ts.map +1 -0
- package/dist/esm/soap-client.js.map +1 -0
- package/dist/esm/types.d.ts +346 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/wsaa.d.ts +3 -0
- package/dist/esm/wsaa.d.ts.map +1 -0
- package/dist/esm/wsaa.js.map +1 -0
- package/llms.txt +37 -15
- package/package.json +26 -18
- package/dist/arca-padron.d.ts +0 -70
- package/dist/arca-padron.d.ts.map +0 -1
- package/dist/arca-padron.js +0 -129
- package/dist/arca-padron.js.map +0 -1
- package/dist/base-client.d.ts.map +0 -1
- package/dist/base-client.js +0 -27
- package/dist/base-client.js.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/index.d.ts +0 -12
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -16
- package/dist/index.js.map +0 -1
- package/dist/padron-a10.d.ts.map +0 -1
- package/dist/padron-a10.js.map +0 -1
- package/dist/padron-a100.d.ts.map +0 -1
- package/dist/padron-a100.js.map +0 -1
- package/dist/padron-a4.d.ts.map +0 -1
- package/dist/padron-a4.js.map +0 -1
- package/dist/soap-client.d.ts.map +0 -1
- package/dist/soap-client.js.map +0 -1
- package/dist/types.d.ts +0 -172
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/wsaa.d.ts.map +0 -1
- package/dist/wsaa.js.map +0 -1
- /package/dist/{soap-client.d.ts → cjs/soap-client.d.ts} +0 -0
- /package/dist/{wsaa.d.ts → cjs/wsaa.d.ts} +0 -0
- /package/dist/{soap-client.js → esm/soap-client.js} +0 -0
- /package/dist/{types.js → esm/types.js} +0 -0
- /package/dist/{wsaa.js → esm/wsaa.js} +0 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.3.0 (2026-10-30)
|
|
4
|
+
|
|
5
|
+
### Breaking changes
|
|
6
|
+
- Requiere `@ramiidv/arca-common` ^0.3.0 (`AccessTicket.expirationTime` es un string ISO).
|
|
7
|
+
- `ImpuestoId.MONOTRIBUTO` es `20` (estaba como `21`, incorrecto según el manual de
|
|
8
|
+
`ws_sr_constancia_inscripcion`). `ImpuestoId.MONOTRIBUTO_SOCIAL` queda deprecado (mismo valor 20):
|
|
9
|
+
el monotributo social se identifica por la categoría.
|
|
10
|
+
- `status()` devuelve también `a5` y `a13`.
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
- `getConstanciaInscripcion(cuit)`: constancia de inscripción (`ws_sr_constancia_inscripcion`,
|
|
14
|
+
`getPersona_v2`), que reemplaza a Padrón A5 (deprecado por ARCA). Tipo `PersonaA5` con datos
|
|
15
|
+
generales, domicilio fiscal, caracterizaciones, régimen general, monotributo y errores.
|
|
16
|
+
- `getPersonaA13(cuit)` y `getIdPersonaListByDocumento(dni)` (`ws_sr_padron_a13`).
|
|
17
|
+
- `condicionIvaDesdePadron(persona)`: condición frente al IVA para `CondicionIVAReceptorId` (también
|
|
18
|
+
reconoce el impuesto 30 en estado `EX` / `NA`).
|
|
19
|
+
- `ticketStorage`, `clockOffsetMs`, `autoClockSkew`, `signal` y `wsaa` en `ArcaPadronConfig`; `signal`
|
|
20
|
+
por llamada en todos los métodos.
|
|
21
|
+
- `ArcaPadronError` y `ArcaPadronServiceError` tienen `code` propio (`ARCA_PADRON_ERROR`,
|
|
22
|
+
`ARCA_PADRON_SERVICE_ERROR`).
|
|
23
|
+
- Re-exporta `CondicionIva`, `MemoryTicketStorage`, `FileTicketStorage` y `ArcaTicketVigenteError`.
|
|
24
|
+
- Build dual ESM + CommonJS con `exports` condicional, y smoke test CommonJS/ESM en CI.
|
|
25
|
+
|
|
26
|
+
### Fixes
|
|
27
|
+
- Se quitaron dependencias que no se usaban (`fast-xml-parser`, `node-forge`): todo pasa por arca-common.
|
|
28
|
+
- A4, A10 y A100 no desenvolvían `personaReturn` / `parameterCollectionReturn`: con respuestas reales de
|
|
29
|
+
ARCA los datos quedaban vacíos y A100 devolvía `[]`.
|
|
30
|
+
- Documentación: el paquete es `@ramiidv/arca-padron` (decía `@ramiidv/arca-padron-sdk`, que da 404).
|
|
31
|
+
- Ejemplo de eventos: los campos son `service` y `source` (decía `serviceId`).
|
|
32
|
+
|
|
33
|
+
### Estado de los servicios
|
|
34
|
+
Según el catálogo de web services de ARCA (consultado el 24/10/2026), A4, A10, A13 y A100 no están
|
|
35
|
+
deprecados; A5 sí (reemplazado por la constancia de inscripción).
|
|
36
|
+
|
|
37
|
+
## 0.2.0
|
|
38
|
+
|
|
39
|
+
- Migración de WSAA/SOAP a `@ramiidv/arca-common`.
|
|
40
|
+
|
|
41
|
+
## 0.1.0 (2026-03-31)
|
|
42
|
+
|
|
43
|
+
### Features
|
|
44
|
+
- Initial release
|
|
45
|
+
- Padrón A4: full taxpayer data (domicilios, impuestos, actividades, regímenes, relaciones, categorías, emails, teléfonos)
|
|
46
|
+
- Padrón A10: minimal taxpayer data (name, status, domicilio fiscal)
|
|
47
|
+
- Padrón A100: parameter tables lookup (provincias, tipos documento, etc.)
|
|
48
|
+
- Auto-handles WSAA authentication
|
|
49
|
+
- Shared infrastructure from @ramiidv/arca-common
|
|
50
|
+
- Retry with exponential backoff on transient errors
|
|
51
|
+
- Event system for logging/debugging
|
package/README.md
CHANGED
|
@@ -1,37 +1,48 @@
|
|
|
1
|
-
# @ramiidv/arca-padron
|
|
1
|
+
# @ramiidv/arca-padron
|
|
2
2
|
|
|
3
|
-
SDK de TypeScript para los web services de Padron de ARCA (ex AFIP)
|
|
3
|
+
SDK de TypeScript para los web services de Padron de ARCA (ex AFIP): Constancia de Inscripcion
|
|
4
|
+
(`ws_sr_constancia_inscripcion`, ex A5), A4 (datos completos), A10 y A13 (datos basicos) y A100
|
|
5
|
+
(tablas de parametros). Incluye `condicionIvaDesdePadron` para obtener la condicion frente al IVA
|
|
6
|
+
que pide la factura electronica (`CondicionIVAReceptorId`).
|
|
4
7
|
|
|
5
8
|
## Caracteristicas
|
|
6
9
|
|
|
7
10
|
- Zero dependencias SOAP: construye los envelopes SOAP manualmente
|
|
8
11
|
- Zero dependencias HTTP: usa `fetch` nativo (Node 18+)
|
|
9
12
|
- Firma CMS/PKCS#7 con node-forge
|
|
10
|
-
- ESM
|
|
13
|
+
- ESM y CommonJS (funciona con `import` y con `require`, incluido TypeScript con `"module": "CommonJS"`)
|
|
11
14
|
- TypeScript estricto con tipos completos
|
|
12
|
-
- Cache automatico de tokens WSAA
|
|
15
|
+
- Cache automatico de tokens WSAA, con persistencia opcional (`ticketStorage`) y ajuste de reloj
|
|
16
|
+
- Cancelacion con `AbortSignal` (global o por llamada)
|
|
13
17
|
- Reintentos con backoff exponencial
|
|
14
18
|
- Sistema de eventos para monitoreo
|
|
15
19
|
|
|
16
20
|
## Instalacion
|
|
17
21
|
|
|
18
22
|
```bash
|
|
19
|
-
npm install @ramiidv/arca-padron
|
|
23
|
+
npm install @ramiidv/arca-padron
|
|
20
24
|
```
|
|
21
25
|
|
|
22
26
|
## Inicio rapido
|
|
23
27
|
|
|
24
28
|
```typescript
|
|
25
29
|
import { readFileSync } from 'fs';
|
|
26
|
-
import { ArcaPadron } from '@ramiidv/arca-padron
|
|
30
|
+
import { ArcaPadron, FileTicketStorage } from '@ramiidv/arca-padron';
|
|
27
31
|
|
|
28
32
|
const padron = new ArcaPadron({
|
|
29
33
|
cert: readFileSync('./cert.pem', 'utf-8'),
|
|
30
34
|
key: readFileSync('./key.pem', 'utf-8'),
|
|
31
35
|
cuit: '20123456789',
|
|
32
36
|
production: false, // false = homologacion
|
|
37
|
+
ticketStorage: new FileTicketStorage('./.arca-tickets'), // recomendado
|
|
33
38
|
});
|
|
34
39
|
|
|
40
|
+
// Constancia de inscripcion (ex A5) + condicion frente al IVA para facturar
|
|
41
|
+
import { condicionIvaDesdePadron } from '@ramiidv/arca-padron';
|
|
42
|
+
const constancia = await padron.getConstanciaInscripcion('30712345674');
|
|
43
|
+
const { condicionIva, motivo } = condicionIvaDesdePadron(constancia);
|
|
44
|
+
// condicionIva: CondicionIva.RESPONSABLE_INSCRIPTO (1), motivo: "Inscripto en IVA (impuesto 30)."
|
|
45
|
+
|
|
35
46
|
// Consulta completa (A4)
|
|
36
47
|
const contribuyente = await padron.getPersona('20123456789');
|
|
37
48
|
console.log(contribuyente.tipoPersona, contribuyente.nombre);
|
|
@@ -41,7 +52,7 @@ const contribuyenteBasico = await padron.getPersonaBasic('20123456789');
|
|
|
41
52
|
console.log(contribuyenteBasico.domicilio?.[0]?.direccion);
|
|
42
53
|
|
|
43
54
|
// Tablas de parametros (A100)
|
|
44
|
-
import { CollectionName } from '@ramiidv/arca-padron
|
|
55
|
+
import { CollectionName } from '@ramiidv/arca-padron';
|
|
45
56
|
const provincias = await padron.getParametros(CollectionName.PROVINCIA);
|
|
46
57
|
console.log(provincias.length, 'provincias');
|
|
47
58
|
```
|
|
@@ -63,14 +74,75 @@ interface ArcaPadronConfig {
|
|
|
63
74
|
/** Delay base en ms para backoff exponencial (default: 1000) */
|
|
64
75
|
retryDelayMs?: number;
|
|
65
76
|
/** Callback de eventos para monitoreo */
|
|
66
|
-
onEvent?: (event:
|
|
77
|
+
onEvent?: (event: ArcaEvent) => void;
|
|
78
|
+
/** Persistencia de tickets WSAA entre reinicios (recomendado) */
|
|
79
|
+
ticketStorage?: TicketStorage;
|
|
80
|
+
/** Desfase relojARCA - relojLocal en ms (default: 0) */
|
|
81
|
+
clockOffsetMs?: number;
|
|
82
|
+
/** Ajustar el desfase si WSAA rechaza el login por reloj (default: true) */
|
|
83
|
+
autoClockSkew?: boolean;
|
|
84
|
+
/** Cancela todas las llamadas de la instancia */
|
|
85
|
+
signal?: AbortSignal;
|
|
86
|
+
/** WsaaClient compartido (ej: `arca.wsaa` de arca-facturacion con el mismo certificado) */
|
|
87
|
+
wsaa?: WsaaClient;
|
|
67
88
|
}
|
|
68
89
|
```
|
|
69
90
|
|
|
91
|
+
> **Persisti el Ticket de Acceso.** WSAA rechaza el login si ya hay un TA vigente para el
|
|
92
|
+
> certificado y servicio. Sin `ticketStorage`, un reinicio del proceso te deja sin poder consultar
|
|
93
|
+
> hasta que venza (hasta 12 horas, `ArcaTicketVigenteError`). Ver `TicketStorage` en
|
|
94
|
+
> [`@ramiidv/arca-common`](https://github.com/ramiidv/arca-common).
|
|
95
|
+
|
|
96
|
+
Si usas tambien `@ramiidv/arca-facturacion` con el mismo certificado, comparti el cliente WSAA:
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
const arca = new Arca({ cuit, cert, key, ticketStorage });
|
|
100
|
+
const padron = new ArcaPadron({ cuit: String(cuit), cert, key, wsaa: arca.wsaa });
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Todos los metodos aceptan un ultimo parametro opcional `{ signal }`.
|
|
104
|
+
|
|
70
105
|
## API
|
|
71
106
|
|
|
72
107
|
### Metodos de alto nivel
|
|
73
108
|
|
|
109
|
+
#### `getConstanciaInscripcion(cuit: string): Promise<PersonaA5>`
|
|
110
|
+
|
|
111
|
+
Constancia de inscripcion via `ws_sr_constancia_inscripcion` (metodo `getPersona_v2`). Reemplaza a
|
|
112
|
+
Padron A5 (`ws_sr_padron_a5`), deprecado por ARCA. Incluye datos generales, domicilio fiscal,
|
|
113
|
+
caracterizaciones, regimen general (impuestos, actividades, regimenes), monotributo (categoria,
|
|
114
|
+
impuestos, actividad) y, si ARCA no puede emitir la constancia, `errorConstancia`.
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
const constancia = await padron.getConstanciaInscripcion('30712345674');
|
|
118
|
+
constancia.domicilioFiscal; // { direccion, localidad, codPostal, idProvincia, ... }
|
|
119
|
+
constancia.impuestos; // impuestos de ambos regimenes
|
|
120
|
+
constancia.monotributo?.categoria; // { idCategoria, descripcionCategoria, ... }
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### `condicionIvaDesdePadron(persona): { condicionIva: CondicionIva | null; motivo: string }`
|
|
124
|
+
|
|
125
|
+
Funcion pura (no consulta ARCA). Acepta una constancia (`PersonaA5`) o una persona de A4:
|
|
126
|
+
|
|
127
|
+
| Padron | `condicionIva` |
|
|
128
|
+
| --- | --- |
|
|
129
|
+
| Monotributo activo (impuesto 20 o categoria) | `MONOTRIBUTISTA` (6) |
|
|
130
|
+
| Monotributo social (categorias 61, 99, 100) | `MONOTRIBUTO_SOCIAL` (13) |
|
|
131
|
+
| Trabajador independiente promovido | `MONOTRIBUTO_INDEPENDIENTE_PROMOVIDO` (16) |
|
|
132
|
+
| IVA activo (impuesto 30) | `RESPONSABLE_INSCRIPTO` (1) |
|
|
133
|
+
| IVA exento (impuesto 32) | `EXENTO` (4) |
|
|
134
|
+
| IVA no alcanzado (impuesto 34) | `IVA_NO_ALCANZADO` (15) |
|
|
135
|
+
| Ninguno de los anteriores, o constancia no emitida | `null` (con el motivo) |
|
|
136
|
+
|
|
137
|
+
Si el padron no alcanza, devuelve `null` en lugar de asumir consumidor final: decidilo segun la
|
|
138
|
+
operacion. Fuente: manual de `ws_sr_constancia_inscripcion` v4.1 (impuestos 20 y 30, estado `AC`,
|
|
139
|
+
categorias de monotributo social). Los impuestos 32 y 34 se reconocen tambien por su descripcion.
|
|
140
|
+
|
|
141
|
+
#### `getPersonaA13(cuit: string): Promise<PersonaA13>`
|
|
142
|
+
|
|
143
|
+
Datos basicos via `ws_sr_padron_a13`. Tambien `getIdPersonaListByDocumento(dni)` devuelve los
|
|
144
|
+
CUIT/CUIL asociados a un documento.
|
|
145
|
+
|
|
74
146
|
#### `getPersona(cuit: string): Promise<PersonaA4>`
|
|
75
147
|
|
|
76
148
|
Obtiene los datos completos de un contribuyente via ws_sr_padron_a4. Autentica automaticamente con WSAA.
|
|
@@ -92,7 +164,7 @@ const contribuyenteBasico = await padron.getPersonaBasic('20123456789');
|
|
|
92
164
|
Obtiene una tabla de parametros via ws_sr_padron_a100.
|
|
93
165
|
|
|
94
166
|
```typescript
|
|
95
|
-
import { CollectionName } from '@ramiidv/arca-padron
|
|
167
|
+
import { CollectionName } from '@ramiidv/arca-padron';
|
|
96
168
|
|
|
97
169
|
const provincias = await padron.getParametros(CollectionName.PROVINCIA);
|
|
98
170
|
const tiposDocumento = await padron.getParametros(CollectionName.TIPO_DOCUMENTO);
|
|
@@ -101,9 +173,9 @@ const tiposRelacion = await padron.getParametros(CollectionName.TIPO_RELACION);
|
|
|
101
173
|
|
|
102
174
|
Colecciones disponibles (enum `CollectionName`, valores SUPA.\* prefijados): `PROVINCIA`, `TIPO_DOCUMENTO`, `TIPO_DOMICILIO`, `TIPO_CLAVE`, `TIPO_EMPRESA_JURIDICA`, `TIPO_EMPRESA_JURIDICA_SUBGRUPO`, `TIPO_RELACION`, `TIPO_SUBTIPO_RELACION`, `TIPO_COMPONENTE_SOCIEDAD`, `TIPO_RELACION_COMPONENTE_SOC`, `TIPO_EMAIL`, `TIPO_TELEFONO`, `TIPO_RESIDENCIA`, `TIPO_DATO_ADICIONAL_DOMICILIO`, `ORGANISMO_INFORMANTE`, `ORGANISMO_CONTROL`, `PROVINCIA_SOCIEDAD_ORG`, `SEXO`, `CALLE`, `LOCALIDAD`.
|
|
103
175
|
|
|
104
|
-
#### `status(): Promise<{ a4
|
|
176
|
+
#### `status(): Promise<{ a5, a4, a10, a13, a100 }>`
|
|
105
177
|
|
|
106
|
-
Verifica el estado de los
|
|
178
|
+
Verifica el estado de los servicios (no requiere autenticacion).
|
|
107
179
|
|
|
108
180
|
```typescript
|
|
109
181
|
const estadoServicios = await padron.status();
|
|
@@ -130,6 +202,9 @@ const credenciales = {
|
|
|
130
202
|
const contribuyente = await padron.a4.getPersona(credenciales, '20123456789');
|
|
131
203
|
```
|
|
132
204
|
|
|
205
|
+
Clientes disponibles: `padron.wsaa`, `padron.a5` (constancia), `padron.a4`, `padron.a10`,
|
|
206
|
+
`padron.a13`, `padron.a100`.
|
|
207
|
+
|
|
133
208
|
## Tipos de respuesta
|
|
134
209
|
|
|
135
210
|
### PersonaA4 (datos completos)
|
|
@@ -219,18 +294,25 @@ El SDK usa una jerarquia de errores de 4 clases:
|
|
|
219
294
|
|
|
220
295
|
```
|
|
221
296
|
Error
|
|
222
|
-
└──
|
|
297
|
+
└── ArcaError (base, de @ramiidv/arca-common)
|
|
298
|
+
├── ArcaPadronError
|
|
223
299
|
├── ArcaAuthError (errores de WSAA)
|
|
224
|
-
|
|
225
|
-
|
|
300
|
+
│ └── ArcaTicketVigenteError (TA vigente que no esta en memoria ni en el storage)
|
|
301
|
+
├── ArcaServiceError
|
|
302
|
+
│ └── ArcaPadronServiceError (errores de negocio)
|
|
303
|
+
└── ArcaSoapError (errores HTTP/transporte, SOAP Faults)
|
|
226
304
|
```
|
|
227
305
|
|
|
306
|
+
Todos tienen un `code` estable y `instanceof` funciona aunque haya mas de una copia del paquete
|
|
307
|
+
cargada. ARCA informa "persona inexistente" y similares como SOAP Fault (`ArcaSoapError` con
|
|
308
|
+
`faultString`).
|
|
309
|
+
|
|
228
310
|
```typescript
|
|
229
311
|
import {
|
|
230
312
|
ArcaAuthError,
|
|
231
313
|
ArcaPadronServiceError,
|
|
232
314
|
ArcaSoapError,
|
|
233
|
-
} from '@ramiidv/arca-padron
|
|
315
|
+
} from '@ramiidv/arca-padron';
|
|
234
316
|
|
|
235
317
|
try {
|
|
236
318
|
await padron.getPersona('20123456789');
|
|
@@ -260,10 +342,10 @@ const padron = new ArcaPadron({
|
|
|
260
342
|
onEvent: (evento) => {
|
|
261
343
|
switch (evento.type) {
|
|
262
344
|
case 'auth:login':
|
|
263
|
-
console.log(`Login para ${evento.
|
|
345
|
+
console.log(`Login para ${evento.service}`);
|
|
264
346
|
break;
|
|
265
347
|
case 'auth:cache-hit':
|
|
266
|
-
console.log(`Token
|
|
348
|
+
console.log(`Token reutilizado para ${evento.service} (${evento.source})`);
|
|
267
349
|
break;
|
|
268
350
|
case 'request:start':
|
|
269
351
|
console.log(`Inicio ${evento.method}`);
|
|
@@ -291,19 +373,22 @@ import {
|
|
|
291
373
|
TipoPersona,
|
|
292
374
|
ImpuestoId,
|
|
293
375
|
CollectionName,
|
|
294
|
-
} from '@ramiidv/arca-padron
|
|
376
|
+
} from '@ramiidv/arca-padron';
|
|
295
377
|
|
|
296
|
-
// Verificar si el contribuyente esta inscripto en IVA
|
|
378
|
+
// Verificar si el contribuyente esta inscripto en IVA (mejor: condicionIvaDesdePadron)
|
|
297
379
|
const tieneIva = contribuyente.impuesto?.some(
|
|
298
|
-
(imp) => imp.idImpuesto === ImpuestoId.IVA_RESPONSABLE_INSCRIPTO && imp.estado === '
|
|
380
|
+
(imp) => imp.idImpuesto === ImpuestoId.IVA_RESPONSABLE_INSCRIPTO && imp.estado === 'ACTIVO'
|
|
299
381
|
);
|
|
382
|
+
|
|
383
|
+
// ImpuestoId.MONOTRIBUTO = 20 (antes figuraba como 21, que era incorrecto)
|
|
300
384
|
```
|
|
301
385
|
|
|
302
386
|
## Requisitos
|
|
303
387
|
|
|
304
388
|
- Node.js >= 18 (soporte nativo de `fetch`)
|
|
305
389
|
- Certificado digital emitido por ARCA/AFIP
|
|
306
|
-
- Autorizacion para los servicios web correspondientes
|
|
390
|
+
- Autorizacion para los servicios web correspondientes: `ws_sr_constancia_inscripcion`,
|
|
391
|
+
`ws_sr_padron_a4`, `ws_sr_padron_a10`, `ws_sr_padron_a13`, `ws_sr_padron_a100` (cada uno por separado)
|
|
307
392
|
|
|
308
393
|
## Licencia
|
|
309
394
|
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { WsaaClient } from '@ramiidv/arca-common';
|
|
2
|
+
import type { CallOptions } from '@ramiidv/arca-common';
|
|
3
|
+
import { PadronA4Client } from './padron-a4.js';
|
|
4
|
+
import { PadronA5Client } from './padron-a5.js';
|
|
5
|
+
import { PadronA10Client } from './padron-a10.js';
|
|
6
|
+
import { PadronA13Client } from './padron-a13.js';
|
|
7
|
+
import { PadronA100Client } from './padron-a100.js';
|
|
8
|
+
import type { ArcaPadronConfig, ParameterRecord, PersonaA4, PersonaA5, PersonaA10, PersonaA13, ServerStatus } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Main orchestrator class for ARCA Padrón web services.
|
|
11
|
+
*
|
|
12
|
+
* Provides high-level methods that handle WSAA authentication automatically
|
|
13
|
+
* and expose results from the Constancia de Inscripción (ex A5), A4 (full),
|
|
14
|
+
* A10 (basic), A13 (basic) and A100 (parameters) web services.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { ArcaPadron, condicionIvaDesdePadron, FileTicketStorage } from '@ramiidv/arca-padron';
|
|
19
|
+
* import { readFileSync } from 'fs';
|
|
20
|
+
*
|
|
21
|
+
* const client = new ArcaPadron({
|
|
22
|
+
* cert: readFileSync('cert.pem', 'utf-8'),
|
|
23
|
+
* key: readFileSync('key.pem', 'utf-8'),
|
|
24
|
+
* cuit: '20123456789',
|
|
25
|
+
* production: false,
|
|
26
|
+
* ticketStorage: new FileTicketStorage('./.arca-tickets'),
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* const persona = await client.getConstanciaInscripcion('30712345674');
|
|
30
|
+
* const { condicionIva, motivo } = condicionIvaDesdePadron(persona);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare class ArcaPadron {
|
|
34
|
+
/** Low-level WSAA client for direct access (se puede compartir con arca-facturacion) */
|
|
35
|
+
readonly wsaa: WsaaClient;
|
|
36
|
+
/** Low-level Constancia de Inscripción (ex Padrón A5) client */
|
|
37
|
+
readonly a5: PadronA5Client;
|
|
38
|
+
/** Low-level Padrón A4 client for direct access */
|
|
39
|
+
readonly a4: PadronA4Client;
|
|
40
|
+
/** Low-level Padrón A10 client for direct access */
|
|
41
|
+
readonly a10: PadronA10Client;
|
|
42
|
+
/** Low-level Padrón A13 client for direct access */
|
|
43
|
+
readonly a13: PadronA13Client;
|
|
44
|
+
/** Low-level Padrón A100 client for direct access */
|
|
45
|
+
readonly a100: PadronA100Client;
|
|
46
|
+
private readonly cuit;
|
|
47
|
+
private readonly signal?;
|
|
48
|
+
constructor(config: ArcaPadronConfig);
|
|
49
|
+
/**
|
|
50
|
+
* Constancia de inscripción (ws_sr_constancia_inscripcion, ex Padrón A5):
|
|
51
|
+
* datos generales, domicilio fiscal, impuestos del régimen general y
|
|
52
|
+
* monotributo. Combinar con `condicionIvaDesdePadron` para facturar.
|
|
53
|
+
* @param cuit - CUIT of the taxpayer to query
|
|
54
|
+
*/
|
|
55
|
+
getConstanciaInscripcion(cuit: string, call?: CallOptions): Promise<PersonaA5>;
|
|
56
|
+
/**
|
|
57
|
+
* Get full taxpayer data (Padrón A4) for a given CUIT.
|
|
58
|
+
* Authenticates automatically via WSAA.
|
|
59
|
+
* @param cuit - CUIT of the taxpayer to query
|
|
60
|
+
*/
|
|
61
|
+
getPersona(cuit: string, call?: CallOptions): Promise<PersonaA4>;
|
|
62
|
+
/**
|
|
63
|
+
* Get basic taxpayer data (Padrón A10) for a given CUIT.
|
|
64
|
+
* Authenticates automatically via WSAA.
|
|
65
|
+
* @param cuit - CUIT of the taxpayer to query
|
|
66
|
+
*/
|
|
67
|
+
getPersonaBasic(cuit: string, call?: CallOptions): Promise<PersonaA10>;
|
|
68
|
+
/**
|
|
69
|
+
* Get basic taxpayer data (Padrón A13) for a given CUIT.
|
|
70
|
+
* @param cuit - CUIT of the taxpayer to query
|
|
71
|
+
*/
|
|
72
|
+
getPersonaA13(cuit: string, call?: CallOptions): Promise<PersonaA13>;
|
|
73
|
+
/**
|
|
74
|
+
* CUITs/CUILs asociados a un número de documento (Padrón A13).
|
|
75
|
+
* @param documento - Número de documento (DNI)
|
|
76
|
+
*/
|
|
77
|
+
getIdPersonaListByDocumento(documento: string, call?: CallOptions): Promise<string[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Get a parameter table (Padrón A100) by collection name.
|
|
80
|
+
* Authenticates automatically via WSAA.
|
|
81
|
+
* @param collection - Name of the collection (e.g. CollectionName.PROVINCIA, CollectionName.TIPO_DOCUMENTO)
|
|
82
|
+
*/
|
|
83
|
+
getParametros(collection: string, call?: CallOptions): Promise<ParameterRecord[]>;
|
|
84
|
+
/**
|
|
85
|
+
* Health check for the Padrón services.
|
|
86
|
+
* Does not require authentication.
|
|
87
|
+
*/
|
|
88
|
+
status(call?: CallOptions): Promise<{
|
|
89
|
+
a5: ServerStatus;
|
|
90
|
+
a4: ServerStatus;
|
|
91
|
+
a10: ServerStatus;
|
|
92
|
+
a13: ServerStatus;
|
|
93
|
+
a100: ServerStatus;
|
|
94
|
+
}>;
|
|
95
|
+
private opts;
|
|
96
|
+
private getAuth;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=arca-padron.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arca-padron.d.ts","sourceRoot":"","sources":["../../src/arca-padron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAa,WAAW,EAAmB,MAAM,sBAAsB,CAAC;AAEpF,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EACV,YAAY,EAEb,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,UAAU;IACrB,wFAAwF;IACxF,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,gEAAgE;IAChE,SAAgB,EAAE,EAAE,cAAc,CAAC;IACnC,mDAAmD;IACnD,SAAgB,EAAE,EAAE,cAAc,CAAC;IACnC,oDAAoD;IACpD,SAAgB,GAAG,EAAE,eAAe,CAAC;IACrC,oDAAoD;IACpD,SAAgB,GAAG,EAAE,eAAe,CAAC;IACrC,qDAAqD;IACrD,SAAgB,IAAI,EAAE,gBAAgB,CAAC;IAEvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc;gBAE1B,MAAM,EAAE,gBAAgB;IA0CpC;;;;;OAKG;IACG,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAMpF;;;;OAIG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAMtE;;;;OAIG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAM5E;;;OAGG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAM1E;;;OAGG;IACG,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAM3F;;;;OAIG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAMvF;;;OAGG;IACG,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QACxC,EAAE,EAAE,YAAY,CAAC;QACjB,EAAE,EAAE,YAAY,CAAC;QACjB,GAAG,EAAE,YAAY,CAAC;QAClB,GAAG,EAAE,YAAY,CAAC;QAClB,IAAI,EAAE,YAAY,CAAC;KACpB,CAAC;IAgBF,OAAO,CAAC,IAAI;YAIE,OAAO;CAQtB"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArcaPadron = void 0;
|
|
4
|
+
const arca_common_1 = require("@ramiidv/arca-common");
|
|
5
|
+
const constants_js_1 = require("./constants.js");
|
|
6
|
+
const padron_a4_js_1 = require("./padron-a4.js");
|
|
7
|
+
const padron_a5_js_1 = require("./padron-a5.js");
|
|
8
|
+
const padron_a10_js_1 = require("./padron-a10.js");
|
|
9
|
+
const padron_a13_js_1 = require("./padron-a13.js");
|
|
10
|
+
const padron_a100_js_1 = require("./padron-a100.js");
|
|
11
|
+
/**
|
|
12
|
+
* Main orchestrator class for ARCA Padrón web services.
|
|
13
|
+
*
|
|
14
|
+
* Provides high-level methods that handle WSAA authentication automatically
|
|
15
|
+
* and expose results from the Constancia de Inscripción (ex A5), A4 (full),
|
|
16
|
+
* A10 (basic), A13 (basic) and A100 (parameters) web services.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { ArcaPadron, condicionIvaDesdePadron, FileTicketStorage } from '@ramiidv/arca-padron';
|
|
21
|
+
* import { readFileSync } from 'fs';
|
|
22
|
+
*
|
|
23
|
+
* const client = new ArcaPadron({
|
|
24
|
+
* cert: readFileSync('cert.pem', 'utf-8'),
|
|
25
|
+
* key: readFileSync('key.pem', 'utf-8'),
|
|
26
|
+
* cuit: '20123456789',
|
|
27
|
+
* production: false,
|
|
28
|
+
* ticketStorage: new FileTicketStorage('./.arca-tickets'),
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* const persona = await client.getConstanciaInscripcion('30712345674');
|
|
32
|
+
* const { condicionIva, motivo } = condicionIvaDesdePadron(persona);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
class ArcaPadron {
|
|
36
|
+
/** Low-level WSAA client for direct access (se puede compartir con arca-facturacion) */
|
|
37
|
+
wsaa;
|
|
38
|
+
/** Low-level Constancia de Inscripción (ex Padrón A5) client */
|
|
39
|
+
a5;
|
|
40
|
+
/** Low-level Padrón A4 client for direct access */
|
|
41
|
+
a4;
|
|
42
|
+
/** Low-level Padrón A10 client for direct access */
|
|
43
|
+
a10;
|
|
44
|
+
/** Low-level Padrón A13 client for direct access */
|
|
45
|
+
a13;
|
|
46
|
+
/** Low-level Padrón A100 client for direct access */
|
|
47
|
+
a100;
|
|
48
|
+
cuit;
|
|
49
|
+
signal;
|
|
50
|
+
constructor(config) {
|
|
51
|
+
const isProduction = config.production ?? false;
|
|
52
|
+
const env = isProduction ? 'production' : 'testing';
|
|
53
|
+
this.cuit = config.cuit;
|
|
54
|
+
this.signal = config.signal;
|
|
55
|
+
const onEvent = config.onEvent;
|
|
56
|
+
const soapOptions = {
|
|
57
|
+
timeout: config.timeout,
|
|
58
|
+
retries: config.retries,
|
|
59
|
+
retryDelayMs: config.retryDelayMs,
|
|
60
|
+
};
|
|
61
|
+
this.wsaa =
|
|
62
|
+
config.wsaa ??
|
|
63
|
+
new arca_common_1.WsaaClient({
|
|
64
|
+
cert: config.cert,
|
|
65
|
+
key: config.key,
|
|
66
|
+
production: isProduction,
|
|
67
|
+
timeout: config.timeout,
|
|
68
|
+
retries: config.retries,
|
|
69
|
+
retryDelayMs: config.retryDelayMs,
|
|
70
|
+
onEvent,
|
|
71
|
+
ticketStorage: config.ticketStorage,
|
|
72
|
+
clockOffsetMs: config.clockOffsetMs,
|
|
73
|
+
autoClockSkew: config.autoClockSkew,
|
|
74
|
+
});
|
|
75
|
+
const clientConfig = (svc) => ({
|
|
76
|
+
endpoint: svc[env],
|
|
77
|
+
namespace: svc.namespace,
|
|
78
|
+
soapOptions,
|
|
79
|
+
onEvent,
|
|
80
|
+
});
|
|
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));
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
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
|
|
92
|
+
*/
|
|
93
|
+
async getConstanciaInscripcion(cuit, call) {
|
|
94
|
+
const opts = this.opts(call);
|
|
95
|
+
const auth = await this.getAuth(constants_js_1.ENDPOINTS.a5.serviceId, opts);
|
|
96
|
+
return this.a5.getPersona(auth, cuit, opts);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
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
|
|
102
|
+
*/
|
|
103
|
+
async getPersona(cuit, call) {
|
|
104
|
+
const opts = this.opts(call);
|
|
105
|
+
const auth = await this.getAuth(constants_js_1.ENDPOINTS.a4.serviceId, opts);
|
|
106
|
+
return this.a4.getPersona(auth, cuit, opts);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
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
|
|
112
|
+
*/
|
|
113
|
+
async getPersonaBasic(cuit, call) {
|
|
114
|
+
const opts = this.opts(call);
|
|
115
|
+
const auth = await this.getAuth(constants_js_1.ENDPOINTS.a10.serviceId, opts);
|
|
116
|
+
return this.a10.getPersona(auth, cuit, opts);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get basic taxpayer data (Padrón A13) for a given CUIT.
|
|
120
|
+
* @param cuit - CUIT of the taxpayer to query
|
|
121
|
+
*/
|
|
122
|
+
async getPersonaA13(cuit, call) {
|
|
123
|
+
const opts = this.opts(call);
|
|
124
|
+
const auth = await this.getAuth(constants_js_1.ENDPOINTS.a13.serviceId, opts);
|
|
125
|
+
return this.a13.getPersona(auth, cuit, opts);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* CUITs/CUILs asociados a un número de documento (Padrón A13).
|
|
129
|
+
* @param documento - Número de documento (DNI)
|
|
130
|
+
*/
|
|
131
|
+
async getIdPersonaListByDocumento(documento, call) {
|
|
132
|
+
const opts = this.opts(call);
|
|
133
|
+
const auth = await this.getAuth(constants_js_1.ENDPOINTS.a13.serviceId, opts);
|
|
134
|
+
return this.a13.getIdPersonaListByDocumento(auth, documento, opts);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
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)
|
|
140
|
+
*/
|
|
141
|
+
async getParametros(collection, call) {
|
|
142
|
+
const opts = this.opts(call);
|
|
143
|
+
const auth = await this.getAuth(constants_js_1.ENDPOINTS.a100.serviceId, opts);
|
|
144
|
+
return this.a100.getParameterCollectionByName(auth, collection, opts);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Health check for the Padrón services.
|
|
148
|
+
* Does not require authentication.
|
|
149
|
+
*/
|
|
150
|
+
async status(call) {
|
|
151
|
+
const opts = this.opts(call);
|
|
152
|
+
const [a5, a4, a10, a13, a100] = await Promise.all([
|
|
153
|
+
this.a5.dummy(opts),
|
|
154
|
+
this.a4.dummy(opts),
|
|
155
|
+
this.a10.dummy(opts),
|
|
156
|
+
this.a13.dummy(opts),
|
|
157
|
+
this.a100.dummy(opts),
|
|
158
|
+
]);
|
|
159
|
+
return { a5, a4, a10, a13, a100 };
|
|
160
|
+
}
|
|
161
|
+
// -------------------------------------------------------------------------
|
|
162
|
+
// Private helpers
|
|
163
|
+
// -------------------------------------------------------------------------
|
|
164
|
+
opts(call) {
|
|
165
|
+
return { signal: (0, arca_common_1.anySignal)(this.signal, call?.signal) };
|
|
166
|
+
}
|
|
167
|
+
async getAuth(serviceId, opts) {
|
|
168
|
+
const ticket = await this.wsaa.getAccessTicket(serviceId, opts);
|
|
169
|
+
return {
|
|
170
|
+
Token: ticket.token,
|
|
171
|
+
Sign: ticket.sign,
|
|
172
|
+
CuitRepresentada: this.cuit,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
exports.ArcaPadron = ArcaPadron;
|
|
177
|
+
//# sourceMappingURL=arca-padron.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arca-padron.js","sourceRoot":"","sources":["../../src/arca-padron.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ArcaEvent, SoapCallOptions, ServerStatus } from '@ramiidv/arca-common';
|
|
1
|
+
import type { ArcaEvent, CallOptions, SoapCallOptions, ServerStatus } from '@ramiidv/arca-common';
|
|
2
|
+
import type { WsAuth } from './types.js';
|
|
2
3
|
/** Shared configuration for all Padrón service clients. */
|
|
3
4
|
export interface PadronClientConfig {
|
|
4
5
|
/** SOAP endpoint URL */
|
|
@@ -13,6 +14,11 @@ export interface PadronClientConfig {
|
|
|
13
14
|
/**
|
|
14
15
|
* Abstract base class for Padrón web service clients.
|
|
15
16
|
* Provides shared constructor logic and health-check method.
|
|
17
|
+
*
|
|
18
|
+
* 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.
|
|
16
22
|
*/
|
|
17
23
|
export declare abstract class BasePadronClient {
|
|
18
24
|
protected readonly endpoint: string;
|
|
@@ -20,7 +26,11 @@ export declare abstract class BasePadronClient {
|
|
|
20
26
|
protected readonly soapOptions?: Pick<SoapCallOptions, 'timeout' | 'retries' | 'retryDelayMs'>;
|
|
21
27
|
protected readonly onEvent?: (event: ArcaEvent) => void;
|
|
22
28
|
constructor(config: PadronClientConfig);
|
|
29
|
+
/** Llama a un método del servicio. */
|
|
30
|
+
protected call(method: string, params: Record<string, unknown>, opts?: CallOptions): Promise<Record<string, unknown>>;
|
|
31
|
+
/** Parámetros de autenticación en el orden del WSDL: token, sign, cuitRepresentada. */
|
|
32
|
+
protected authParams(auth: WsAuth): Record<string, unknown>;
|
|
23
33
|
/** Health check for this service. */
|
|
24
|
-
dummy(): Promise<ServerStatus>;
|
|
34
|
+
dummy(opts?: CallOptions): Promise<ServerStatus>;
|
|
25
35
|
}
|
|
26
36
|
//# sourceMappingURL=base-client.d.ts.map
|
|
@@ -0,0 +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"}
|