@ramiidv/arca-padron 0.3.0 → 0.5.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 +117 -0
- package/README.md +146 -99
- package/dist/arca-padron.d.ts +107 -0
- package/dist/arca-padron.d.ts.map +1 -0
- package/dist/arca-padron.js +178 -0
- package/dist/arca-padron.js.map +1 -0
- package/dist/base-client.d.ts +45 -0
- package/dist/base-client.d.ts.map +1 -0
- package/dist/base-client.js +54 -0
- package/dist/base-client.js.map +1 -0
- package/dist/{esm/condicion-iva.d.ts → condicion-iva.d.ts} +9 -5
- package/dist/condicion-iva.d.ts.map +1 -0
- package/dist/condicion-iva.js +170 -0
- package/dist/condicion-iva.js.map +1 -0
- package/dist/{esm/constants.d.ts → constants.d.ts} +57 -12
- package/dist/constants.d.ts.map +1 -0
- package/dist/{esm/constants.js → constants.js} +53 -11
- package/dist/constants.js.map +1 -0
- package/dist/errors.d.ts +50 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +58 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/mapping.d.ts +22 -0
- package/dist/mapping.d.ts.map +1 -0
- package/dist/mapping.js +52 -0
- package/dist/mapping.js.map +1 -0
- package/dist/padron-a10.d.ts +24 -0
- package/dist/padron-a10.d.ts.map +1 -0
- package/dist/padron-a10.js +41 -0
- package/dist/padron-a10.js.map +1 -0
- package/dist/padron-a100.d.ts +26 -0
- package/dist/padron-a100.d.ts.map +1 -0
- package/dist/padron-a100.js +46 -0
- package/dist/padron-a100.js.map +1 -0
- package/dist/padron-a13.d.ts +36 -0
- package/dist/padron-a13.d.ts.map +1 -0
- package/dist/padron-a13.js +95 -0
- package/dist/padron-a13.js.map +1 -0
- package/dist/padron-a4.d.ts +21 -0
- package/dist/padron-a4.d.ts.map +1 -0
- package/dist/padron-a4.js +128 -0
- package/dist/padron-a4.js.map +1 -0
- package/dist/padron-a5.d.ts +39 -0
- package/dist/padron-a5.d.ts.map +1 -0
- package/dist/padron-a5.js +214 -0
- package/dist/padron-a5.js.map +1 -0
- package/dist/{cjs/types.d.ts → types.d.ts} +36 -53
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js.map +1 -0
- package/llms.txt +46 -27
- package/package.json +21 -32
- package/dist/cjs/arca-padron.d.ts +0 -98
- package/dist/cjs/arca-padron.d.ts.map +0 -1
- package/dist/cjs/arca-padron.js +0 -177
- package/dist/cjs/arca-padron.js.map +0 -1
- package/dist/cjs/base-client.d.ts +0 -36
- package/dist/cjs/base-client.d.ts.map +0 -1
- package/dist/cjs/base-client.js +0 -52
- package/dist/cjs/base-client.js.map +0 -1
- package/dist/cjs/condicion-iva.d.ts +0 -24
- package/dist/cjs/condicion-iva.d.ts.map +0 -1
- package/dist/cjs/condicion-iva.js +0 -119
- package/dist/cjs/condicion-iva.js.map +0 -1
- package/dist/cjs/constants.d.ts +0 -97
- package/dist/cjs/constants.d.ts.map +0 -1
- package/dist/cjs/constants.js +0 -113
- package/dist/cjs/constants.js.map +0 -1
- package/dist/cjs/errors.d.ts +0 -22
- package/dist/cjs/errors.d.ts.map +0 -1
- package/dist/cjs/errors.js +0 -36
- package/dist/cjs/errors.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -16
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js +0 -56
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/mapping.d.ts +0 -9
- package/dist/cjs/mapping.d.ts.map +0 -1
- package/dist/cjs/mapping.js +0 -14
- package/dist/cjs/mapping.js.map +0 -1
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/padron-a10.d.ts +0 -18
- package/dist/cjs/padron-a10.d.ts.map +0 -1
- package/dist/cjs/padron-a10.js +0 -73
- package/dist/cjs/padron-a10.js.map +0 -1
- package/dist/cjs/padron-a100.d.ts +0 -16
- package/dist/cjs/padron-a100.d.ts.map +0 -1
- package/dist/cjs/padron-a100.js +0 -38
- package/dist/cjs/padron-a100.js.map +0 -1
- package/dist/cjs/padron-a13.d.ts +0 -24
- package/dist/cjs/padron-a13.d.ts.map +0 -1
- package/dist/cjs/padron-a13.js +0 -80
- package/dist/cjs/padron-a13.js.map +0 -1
- package/dist/cjs/padron-a4.d.ts +0 -18
- package/dist/cjs/padron-a4.d.ts.map +0 -1
- package/dist/cjs/padron-a4.js +0 -173
- package/dist/cjs/padron-a4.js.map +0 -1
- package/dist/cjs/padron-a5.d.ts +0 -24
- package/dist/cjs/padron-a5.d.ts.map +0 -1
- package/dist/cjs/padron-a5.js +0 -156
- package/dist/cjs/padron-a5.js.map +0 -1
- package/dist/cjs/soap-client.d.ts +0 -2
- package/dist/cjs/soap-client.d.ts.map +0 -1
- package/dist/cjs/soap-client.js +0 -13
- package/dist/cjs/soap-client.js.map +0 -1
- package/dist/cjs/types.d.ts.map +0 -1
- package/dist/cjs/types.js +0 -3
- package/dist/cjs/types.js.map +0 -1
- package/dist/cjs/wsaa.d.ts +0 -3
- package/dist/cjs/wsaa.d.ts.map +0 -1
- package/dist/cjs/wsaa.js +0 -6
- package/dist/cjs/wsaa.js.map +0 -1
- package/dist/esm/arca-padron.d.ts +0 -98
- package/dist/esm/arca-padron.d.ts.map +0 -1
- package/dist/esm/arca-padron.js +0 -173
- package/dist/esm/arca-padron.js.map +0 -1
- package/dist/esm/base-client.d.ts +0 -36
- package/dist/esm/base-client.d.ts.map +0 -1
- package/dist/esm/base-client.js +0 -48
- package/dist/esm/base-client.js.map +0 -1
- package/dist/esm/condicion-iva.d.ts.map +0 -1
- package/dist/esm/condicion-iva.js +0 -116
- package/dist/esm/condicion-iva.js.map +0 -1
- package/dist/esm/constants.d.ts.map +0 -1
- package/dist/esm/constants.js.map +0 -1
- package/dist/esm/errors.d.ts +0 -22
- package/dist/esm/errors.d.ts.map +0 -1
- package/dist/esm/errors.js +0 -26
- package/dist/esm/errors.js.map +0 -1
- package/dist/esm/index.d.ts +0 -16
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/index.js +0 -22
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/mapping.d.ts +0 -9
- package/dist/esm/mapping.d.ts.map +0 -1
- package/dist/esm/mapping.js +0 -8
- package/dist/esm/mapping.js.map +0 -1
- package/dist/esm/padron-a10.d.ts +0 -18
- package/dist/esm/padron-a10.d.ts.map +0 -1
- package/dist/esm/padron-a10.js +0 -69
- package/dist/esm/padron-a10.js.map +0 -1
- package/dist/esm/padron-a100.d.ts +0 -16
- package/dist/esm/padron-a100.d.ts.map +0 -1
- package/dist/esm/padron-a100.js +0 -34
- package/dist/esm/padron-a100.js.map +0 -1
- package/dist/esm/padron-a13.d.ts +0 -24
- package/dist/esm/padron-a13.d.ts.map +0 -1
- package/dist/esm/padron-a13.js +0 -75
- package/dist/esm/padron-a13.js.map +0 -1
- package/dist/esm/padron-a4.d.ts +0 -18
- package/dist/esm/padron-a4.d.ts.map +0 -1
- package/dist/esm/padron-a4.js +0 -169
- package/dist/esm/padron-a4.js.map +0 -1
- package/dist/esm/padron-a5.d.ts +0 -24
- package/dist/esm/padron-a5.d.ts.map +0 -1
- package/dist/esm/padron-a5.js +0 -151
- package/dist/esm/padron-a5.js.map +0 -1
- package/dist/esm/soap-client.d.ts +0 -2
- package/dist/esm/soap-client.d.ts.map +0 -1
- package/dist/esm/soap-client.js +0 -3
- package/dist/esm/soap-client.js.map +0 -1
- package/dist/esm/types.d.ts +0 -346
- package/dist/esm/types.d.ts.map +0 -1
- package/dist/esm/types.js.map +0 -1
- package/dist/esm/wsaa.d.ts +0 -3
- package/dist/esm/wsaa.d.ts.map +0 -1
- package/dist/esm/wsaa.js +0 -2
- package/dist/esm/wsaa.js.map +0 -1
- /package/dist/{esm/types.js → types.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,121 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- bed68e8: Paquetes solo ESM y Node >= 20.19. `arca-common`, `arca-facturacion` y
|
|
8
|
+
`arca-padron` dejan de publicar un build CommonJS: desde CommonJS se cargan con
|
|
9
|
+
`require()` (require(esm), Node >= 20.19 / 22.12). Todos los paquetes pasan a
|
|
10
|
+
requerir Node >= 20.19.0 (Node 18 y 20 sin soporte). El código vive ahora en el
|
|
11
|
+
monorepo `arca-sdks`.
|
|
12
|
+
- f8bd053: Las clases principales extienden `ArcaSdkBase` de arca-common, así que todos
|
|
13
|
+
los SDKs tienen la misma base: `wsaa`, `cuit`, `production`, `on()`/`off()`,
|
|
14
|
+
`clearAuthCache()`, `config.wsaa` (WsaaClient compartido) y `config.signal`
|
|
15
|
+
(signal global). arca-mtxca acepta `endpoints: { mtxca, wsaa }` (`endpoint` y
|
|
16
|
+
`wsaaEndpoint` quedan deprecados). Los `dummy`/`status` validan la respuesta con
|
|
17
|
+
`parseServerStatus`: si falta un campo lanzan `ArcaSoapError`.
|
|
18
|
+
- c9f1444: Requests y respuestas se validan, serializan y decodifican con el DSL de
|
|
19
|
+
`@ramiidv/arca-common/schema`, transcripto del XSD oficial de cada servicio.
|
|
20
|
+
|
|
21
|
+
- Corrección: las respuestas se parsean sin conversión numérica, así que los
|
|
22
|
+
`xs:string` con contenido numérico ya no pierden ceros a la izquierda ni
|
|
23
|
+
decimales (ej: `"0012"`, `"1.50"`, `DocNro`, `codigoSeguridad`).
|
|
24
|
+
- Los campos desconocidos en el input se rechazan con `ArcaValidationError`
|
|
25
|
+
(antes se ignoraban).
|
|
26
|
+
- Todos los errores de validación se informan juntos (`details`), con mensajes
|
|
27
|
+
del tipo `campo: motivo`. Cambió el texto de los mensajes.
|
|
28
|
+
- arca-fecred deja de recortar espacios de los textos y envía `codCtaCte` tal
|
|
29
|
+
cual; porcentaje y cotización se envían con decimales fijos.
|
|
30
|
+
|
|
31
|
+
### Patch Changes
|
|
32
|
+
|
|
33
|
+
- 20ecf7d: DSL de schemas, segunda versión:
|
|
34
|
+
|
|
35
|
+
- Corrección: `dec()` redondea sobre el valor decimal escrito (`8.575` →
|
|
36
|
+
`8.58`; antes daba `8.57` por la representación binaria). Afecta los importes
|
|
37
|
+
que los SDKs envían redondeados.
|
|
38
|
+
- `must()` rechaza también el valor vacío; los elementos `xsi:nil` cuentan
|
|
39
|
+
como ausentes (en una lista, como lista vacía); `must()` en listas exige el
|
|
40
|
+
elemento; un objeto opcional vacío se omite y uno obligatorio valida sus hijos.
|
|
41
|
+
- Al decodificar se validan enteros (`int()`) y valores permitidos
|
|
42
|
+
(`str({ values })`).
|
|
43
|
+
- Nuevos: `siNo()` (S/N ↔ boolean), `double()`, `xml(nombre, campo)` (nombre
|
|
44
|
+
distinto en el XML), `custom(encode, decode)`, `roundHalfUp()` y
|
|
45
|
+
`decodeResponse(..., { emptyLists: 'omit' })`.
|
|
46
|
+
- Updated dependencies [8c02c30]
|
|
47
|
+
- Updated dependencies [f8bd053]
|
|
48
|
+
- Updated dependencies [242fb5f]
|
|
49
|
+
- Updated dependencies [fd438bc]
|
|
50
|
+
- Updated dependencies [bed68e8]
|
|
51
|
+
- Updated dependencies [20ecf7d]
|
|
52
|
+
- Updated dependencies [b86db00]
|
|
53
|
+
- @ramiidv/arca-common@0.5.0
|
|
54
|
+
|
|
55
|
+
## 0.4.0 (2026-11-01)
|
|
56
|
+
|
|
57
|
+
### Breaking changes
|
|
58
|
+
- Requiere `@ramiidv/arca-common` ^0.4.0. `ArcaPadronConfig` extiende `ArcaBaseConfig` (`cuit` acepta
|
|
59
|
+
`string | number`; se agregan `tokenTTLMinutes`, `loginErrorCooldownMs`, `fetch`, `legacyTls` y
|
|
60
|
+
`endpoints`, que se pasan al `WsaaClient` y a cada servicio).
|
|
61
|
+
- Las CUIT se validan localmente con `validateCuit` (dígito verificador) y se envían normalizadas: una
|
|
62
|
+
CUIT inválida (también la representada de la config) lanza `ArcaValidationError` sin llamar a ARCA.
|
|
63
|
+
- Los SOAP Faults de negocio conocidos (CUIT inexistente, clave INACTIVA, id inválido, token no
|
|
64
|
+
autorizado; textos de los manuales) se lanzan como `ArcaPadronServiceError` con `reason` tipado y el
|
|
65
|
+
`ArcaSoapError` original en `cause` (antes llegaban como `ArcaSoapError`).
|
|
66
|
+
- Si `personaReturn` no trae `persona` (A4, A10, A13), la constancia no trae `datosGenerales` ni
|
|
67
|
+
`errorConstancia`, o A100 no trae `parameterCollection`, se lanza `ArcaPadronError` (antes se
|
|
68
|
+
devolvía una persona inventada `{ idPersona: '', tipoPersona: 'FISICA' }` o `[]`). También si falta el
|
|
69
|
+
id de un ítem (`idImpuesto`, `idActividad`, `idCategoria`, etc.): ya no se rellenan con `0` / `''`.
|
|
70
|
+
- `status()` devuelve `PromiseSettledResult<ServerStatus>` por servicio (`Promise.allSettled`): un
|
|
71
|
+
servicio caído ya no hace fallar todo.
|
|
72
|
+
- `ImpuestoId.BIENES_PERSONALES` es `180` (estaba como `31`, incorrecto); se quitó el alias
|
|
73
|
+
`ImpuestoId.MONOTRIBUTO_SOCIAL` (mismo valor que `MONOTRIBUTO`, rompía el mapeo inverso).
|
|
74
|
+
- `condicionIvaDesdePadron`: el impuesto 30 en estado `NA` / `NO APORTANTE` ya no se interpreta como IVA
|
|
75
|
+
no alcanzado (`NA` es "NO APORTANTE" en la tabla TipoEstado); un impuesto 20 en baja ya no da
|
|
76
|
+
monotributista aunque haya categoría.
|
|
77
|
+
- Tipos: `DomicilioA4` ya no tiene `estadoDomicilio` (no existe en el WSDL de A4) y, como
|
|
78
|
+
`DependenciaA4`/`DependenciaA10`, tiene sus campos opcionales (son `minOccurs="0"`);
|
|
79
|
+
`ImpuestoA4.estado` y `ParameterAttribute.value` son opcionales.
|
|
80
|
+
- Se eliminaron los módulos internos `soap-client.ts` y `wsaa.ts` (re-exports puros): `WsaaClient`,
|
|
81
|
+
`ensureArray`, `parseXml` y `buildXml` se siguen exportando desde el índice.
|
|
82
|
+
|
|
83
|
+
### Features
|
|
84
|
+
- `getConstanciasInscripcion(cuits)` / `a5.getPersonaList`: `getPersonaList_v2`, hasta 250 CUITs; las
|
|
85
|
+
inexistentes vuelven con `errorConstancia`.
|
|
86
|
+
- `getPersonaA13V2(cuit)` / `a13.getPersonaV2`: consulta de claves INACTIVAS (manual A13 v1.4).
|
|
87
|
+
- `monotributo.componenteDeSociedad` en la constancia (tipo `relacion` del WSDL).
|
|
88
|
+
- `CollectionName`: `AUTONOMO_MONOTRIBUTO`, `REGIMEN`, `TIPO_REGIMEN`, `CARACTERIZACION`,
|
|
89
|
+
`TIPO_ARCHIVO`, `ACTIVIDAD_RUBRO`, `RUBRO_ACTIVIDAD`, `ACTIVIDAD_OCUPACIONAL` (manual A100 v2.1).
|
|
90
|
+
- `ImpuestoId`: `MONOTRIBUTO_AUTONOMO` (21), `AUTONOMOS` (308).
|
|
91
|
+
- `getIdPersonaListByDocumento` acepta el documento con puntos/espacios y lo valida.
|
|
92
|
+
- Se exportan `ArcaValidationError`, `DocTipo`, `PadronErrorReason`, `PadronStatus`, `PadronServicio`,
|
|
93
|
+
`ComponenteSociedadA5`, `PadronSoapOptions` y `MAX_PERSONA_LIST`.
|
|
94
|
+
|
|
95
|
+
### Fixes
|
|
96
|
+
- A4 y A10: los campos `xs:string` con contenido numérico (`codPostal`, `datoAdicional`, `localidad`,
|
|
97
|
+
`numeroInscripcion`) salían como `number`; ahora son `string`. A4 y A10 usan los helpers de
|
|
98
|
+
`mapping.ts` (sin bloques duplicados de dependencia, claves inactivas y domicilio).
|
|
99
|
+
- A100: `id`, `description`, `name` y `value` se preservan tal cual (`"10.50"` ya no se convierte en
|
|
100
|
+
`10.5`, ni `"1E3"` en `1000`). Usa `parseNumbers: false` de arca-common en lugar de envolver `fetch`:
|
|
101
|
+
el A100 ya no desactiva el fallback TLS legacy (`legacyTls`) y respeta el `fetch` de la config.
|
|
102
|
+
- Todos los servicios parsean las respuestas con `parseNumbers: false` y convierten explícitamente los
|
|
103
|
+
campos numéricos del WSDL: los `xs:string` con decimales, exponente o ceros a la izquierda
|
|
104
|
+
(`datoAdicional`, `piso`, `numeroDocumento`, etc.) llegan tal cual (`"1.50"` antes era `"1.5"`).
|
|
105
|
+
- Los elementos `xsi:nil="true"` se tratan como ausentes (antes, por ejemplo, una caracterización nil
|
|
106
|
+
se mapeaba como `{ idCaracterizacion: 0 }`).
|
|
107
|
+
- `condicionIvaDesdePadron`: reconoce los estados del manual A4 en palabras (`ACTIVO EN TRAMITE`,
|
|
108
|
+
`EXENTO`, `EXENTO EN TRAMITE`, `BAJA ...`) además de las abreviaturas; categorías 101 a 104
|
|
109
|
+
(proyectos productivos) como monotributo social; incluye `errorRegimenGeneral` / `errorMonotributo`
|
|
110
|
+
en el motivo y ya no afirma "No figura inscripto" cuando ARCA informó errores.
|
|
111
|
+
- `ArcaPadronError` y `ArcaPadronServiceError` ahora se lanzan de verdad (la documentación enseñaba a
|
|
112
|
+
capturarlos pero el SDK nunca los usaba).
|
|
113
|
+
|
|
114
|
+
### Deprecated
|
|
115
|
+
- `TipoDocumento` (es `DocTipo` numérico de WSFEv1, no el `tipoDocumento` string del padrón): usar `DocTipo`.
|
|
116
|
+
- `checkServiceErrors` desde este paquete (Padrón informa los errores como SOAP Fault).
|
|
117
|
+
- `ImpuestoId.IVA_NO_INSCRIPTO` (33), sin respaldo en los manuales.
|
|
118
|
+
|
|
3
119
|
## 0.3.0 (2026-10-30)
|
|
4
120
|
|
|
5
121
|
### Breaking changes
|
|
@@ -37,6 +153,7 @@ deprecados; A5 sí (reemplazado por la constancia de inscripción).
|
|
|
37
153
|
## 0.2.0
|
|
38
154
|
|
|
39
155
|
- Migración de WSAA/SOAP a `@ramiidv/arca-common`.
|
|
156
|
+
- CI en Node 18/20/22, build standalone, workflow de release, `publishConfig` público y homepage.
|
|
40
157
|
|
|
41
158
|
## 0.1.0 (2026-03-31)
|
|
42
159
|
|
package/README.md
CHANGED
|
@@ -7,14 +7,14 @@ que pide la factura electronica (`CondicionIVAReceptorId`).
|
|
|
7
7
|
|
|
8
8
|
## Caracteristicas
|
|
9
9
|
|
|
10
|
-
-
|
|
11
|
-
- Zero dependencias HTTP: usa `fetch` nativo (Node 18+)
|
|
12
|
-
- Firma CMS/PKCS#7 con node-forge
|
|
10
|
+
- Unica dependencia: `@ramiidv/arca-common` (WSAA, SOAP, validadores); usa `fetch` nativo (Node 18+)
|
|
13
11
|
- ESM y CommonJS (funciona con `import` y con `require`, incluido TypeScript con `"module": "CommonJS"`)
|
|
14
12
|
- TypeScript estricto con tipos completos
|
|
15
13
|
- Cache automatico de tokens WSAA, con persistencia opcional (`ticketStorage`) y ajuste de reloj
|
|
16
14
|
- Cancelacion con `AbortSignal` (global o por llamada)
|
|
17
|
-
- Reintentos con backoff exponencial
|
|
15
|
+
- Reintentos con backoff exponencial ante errores transitorios (nunca ante un SOAP Fault)
|
|
16
|
+
- Errores de negocio tipados: `ArcaPadronServiceError` con `reason` (`inexistente`, `inactiva`, ...)
|
|
17
|
+
- Validacion local de CUIT (digito verificador) antes de llamar a ARCA
|
|
18
18
|
- Sistema de eventos para monitoreo
|
|
19
19
|
|
|
20
20
|
## Instalacion
|
|
@@ -32,23 +32,23 @@ import { ArcaPadron, FileTicketStorage } from '@ramiidv/arca-padron';
|
|
|
32
32
|
const padron = new ArcaPadron({
|
|
33
33
|
cert: readFileSync('./cert.pem', 'utf-8'),
|
|
34
34
|
key: readFileSync('./key.pem', 'utf-8'),
|
|
35
|
-
cuit: '
|
|
35
|
+
cuit: '20123456786',
|
|
36
36
|
production: false, // false = homologacion
|
|
37
37
|
ticketStorage: new FileTicketStorage('./.arca-tickets'), // recomendado
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
// Constancia de inscripcion (ex A5) + condicion frente al IVA para facturar
|
|
41
41
|
import { condicionIvaDesdePadron } from '@ramiidv/arca-padron';
|
|
42
|
-
const constancia = await padron.getConstanciaInscripcion('
|
|
42
|
+
const constancia = await padron.getConstanciaInscripcion('30712345671');
|
|
43
43
|
const { condicionIva, motivo } = condicionIvaDesdePadron(constancia);
|
|
44
44
|
// condicionIva: CondicionIva.RESPONSABLE_INSCRIPTO (1), motivo: "Inscripto en IVA (impuesto 30)."
|
|
45
45
|
|
|
46
46
|
// Consulta completa (A4)
|
|
47
|
-
const contribuyente = await padron.getPersona('
|
|
47
|
+
const contribuyente = await padron.getPersona('20-11111111-2'); // con o sin guiones
|
|
48
48
|
console.log(contribuyente.tipoPersona, contribuyente.nombre);
|
|
49
49
|
|
|
50
50
|
// Consulta basica (A10)
|
|
51
|
-
const contribuyenteBasico = await padron.getPersonaBasic('
|
|
51
|
+
const contribuyenteBasico = await padron.getPersonaBasic('20111111112');
|
|
52
52
|
console.log(contribuyenteBasico.domicilio?.[0]?.direccion);
|
|
53
53
|
|
|
54
54
|
// Tablas de parametros (A100)
|
|
@@ -59,32 +59,30 @@ console.log(provincias.length, 'provincias');
|
|
|
59
59
|
|
|
60
60
|
## Configuracion
|
|
61
61
|
|
|
62
|
+
`ArcaPadronConfig` extiende `ArcaBaseConfig` de `@ramiidv/arca-common`:
|
|
63
|
+
|
|
62
64
|
```typescript
|
|
63
|
-
interface ArcaPadronConfig {
|
|
64
|
-
|
|
65
|
-
cert: string;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
retries?: number;
|
|
74
|
-
/** Delay base en ms para backoff exponencial (default: 1000) */
|
|
75
|
-
retryDelayMs?: number;
|
|
76
|
-
/** Callback de eventos para monitoreo */
|
|
65
|
+
interface ArcaPadronConfig extends ArcaBaseConfig {
|
|
66
|
+
// De ArcaBaseConfig:
|
|
67
|
+
cert: string; // Certificado X.509 en formato PEM
|
|
68
|
+
key: string; // Clave privada en formato PEM
|
|
69
|
+
cuit: string | number; // CUIT representada (se valida el digito verificador)
|
|
70
|
+
production?: boolean; // default: false (homologacion)
|
|
71
|
+
timeout?: number; // ms por request (default: 30000)
|
|
72
|
+
retries?: number; // reintentos ante errores transitorios (default: 1)
|
|
73
|
+
retryDelayMs?: number; // backoff exponencial (default: 1000)
|
|
74
|
+
tokenTTLMinutes?: number; // vigencia pedida a WSAA (default: 720)
|
|
77
75
|
onEvent?: (event: ArcaEvent) => void;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
signal?: AbortSignal;
|
|
86
|
-
|
|
87
|
-
wsaa?:
|
|
76
|
+
ticketStorage?: TicketStorage; // persistencia de tickets WSAA (recomendado)
|
|
77
|
+
clockOffsetMs?: number; // relojARCA - relojLocal en ms (default: 0)
|
|
78
|
+
autoClockSkew?: boolean; // default: true
|
|
79
|
+
loginErrorCooldownMs?: number; // default: 60000
|
|
80
|
+
fetch?: typeof fetch; // fetch propio (proxy, mTLS, tests)
|
|
81
|
+
legacyTls?: 'auto' | 'never' | 'always';
|
|
82
|
+
// Propias de Padron:
|
|
83
|
+
signal?: AbortSignal; // cancela todas las llamadas de la instancia
|
|
84
|
+
wsaa?: WsaaClient; // WsaaClient compartido (ej: arca.wsaa de arca-facturacion)
|
|
85
|
+
endpoints?: { wsaa?: string; a5?: string; a4?: string; a10?: string; a13?: string; a100?: string };
|
|
88
86
|
}
|
|
89
87
|
```
|
|
90
88
|
|
|
@@ -97,71 +95,102 @@ Si usas tambien `@ramiidv/arca-facturacion` con el mismo certificado, comparti e
|
|
|
97
95
|
|
|
98
96
|
```typescript
|
|
99
97
|
const arca = new Arca({ cuit, cert, key, ticketStorage });
|
|
100
|
-
const padron = new ArcaPadron({ cuit
|
|
98
|
+
const padron = new ArcaPadron({ cuit, cert, key, wsaa: arca.wsaa });
|
|
101
99
|
```
|
|
102
100
|
|
|
103
|
-
Todos los metodos aceptan un ultimo parametro opcional `{ signal }`.
|
|
101
|
+
Todos los metodos aceptan un ultimo parametro opcional `{ signal }`. Las CUIT se aceptan con o sin
|
|
102
|
+
guiones (`'20-11111111-2'`, `'20111111112'` o `20111111112`): se validan localmente (digito
|
|
103
|
+
verificador) y se envian normalizadas; una CUIT invalida lanza `ArcaValidationError` sin llamar a ARCA.
|
|
104
|
+
|
|
105
|
+
Todas las operaciones de Padron son consultas (no modifican nada en ARCA): se pueden reintentar sin
|
|
106
|
+
riesgo.
|
|
104
107
|
|
|
105
108
|
## API
|
|
106
109
|
|
|
107
110
|
### Metodos de alto nivel
|
|
108
111
|
|
|
109
|
-
#### `getConstanciaInscripcion(cuit
|
|
112
|
+
#### `getConstanciaInscripcion(cuit): Promise<PersonaA5>`
|
|
110
113
|
|
|
111
114
|
Constancia de inscripcion via `ws_sr_constancia_inscripcion` (metodo `getPersona_v2`). Reemplaza a
|
|
112
115
|
Padron A5 (`ws_sr_padron_a5`), deprecado por ARCA. Incluye datos generales, domicilio fiscal,
|
|
113
116
|
caracterizaciones, regimen general (impuestos, actividades, regimenes), monotributo (categoria,
|
|
114
|
-
impuestos, actividad) y, si ARCA no puede emitir la constancia,
|
|
117
|
+
impuestos, actividad, `componenteDeSociedad`) y, si ARCA no puede emitir la constancia (o una parte),
|
|
118
|
+
`errorConstancia` / `errorRegimenGeneral` / `errorMonotributo`: esos casos se devuelven, no se lanzan.
|
|
115
119
|
|
|
116
120
|
```typescript
|
|
117
|
-
const constancia = await padron.getConstanciaInscripcion('
|
|
118
|
-
constancia.domicilioFiscal;
|
|
119
|
-
constancia.impuestos;
|
|
121
|
+
const constancia = await padron.getConstanciaInscripcion('30712345671');
|
|
122
|
+
constancia.domicilioFiscal; // { direccion, localidad, codPostal, idProvincia, ... }
|
|
123
|
+
constancia.impuestos; // impuestos de ambos regimenes
|
|
120
124
|
constancia.monotributo?.categoria; // { idCategoria, descripcionCategoria, ... }
|
|
121
125
|
```
|
|
122
126
|
|
|
127
|
+
#### `getConstanciasInscripcion(cuits): Promise<PersonaA5[]>`
|
|
128
|
+
|
|
129
|
+
Hasta 250 CUITs en una llamada (`getPersonaList_v2`). Las CUITs inexistentes no hacen fallar la
|
|
130
|
+
consulta: vuelven como una persona con `errorConstancia.error = ['No existe persona con ese Id']`.
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
const constancias = await padron.getConstanciasInscripcion(['20224107030', '27015942210']);
|
|
134
|
+
for (const c of constancias) {
|
|
135
|
+
if (c.errorConstancia) console.warn(c.idPersona, c.errorConstancia.error);
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
123
139
|
#### `condicionIvaDesdePadron(persona): { condicionIva: CondicionIva | null; motivo: string }`
|
|
124
140
|
|
|
125
141
|
Funcion pura (no consulta ARCA). Acepta una constancia (`PersonaA5`) o una persona de A4:
|
|
126
142
|
|
|
127
|
-
| Padron
|
|
128
|
-
|
|
|
129
|
-
| Monotributo activo (impuesto 20
|
|
130
|
-
| Monotributo social (categorias 61, 99, 100) | `MONOTRIBUTO_SOCIAL` (13)
|
|
131
|
-
| Trabajador independiente promovido | `MONOTRIBUTO_INDEPENDIENTE_PROMOVIDO` (16) |
|
|
132
|
-
| IVA
|
|
133
|
-
| IVA
|
|
134
|
-
| IVA no alcanzado
|
|
135
|
-
| Ninguno de los anteriores,
|
|
143
|
+
| Padron | `condicionIva` |
|
|
144
|
+
| --------------------------------------------------------------------------- | ------------------------------------------ |
|
|
145
|
+
| Monotributo activo (impuesto 20 activo; si no figura el 20, la categoria) | `MONOTRIBUTISTA` (6) |
|
|
146
|
+
| Monotributo social (categorias 61, 99, 100 y proyectos productivos 101-104) | `MONOTRIBUTO_SOCIAL` (13) |
|
|
147
|
+
| Trabajador independiente promovido (por la descripcion de la categoria) | `MONOTRIBUTO_INDEPENDIENTE_PROMOVIDO` (16) |
|
|
148
|
+
| IVA (impuesto 30) `ACTIVO` / `ACTIVO EN TRAMITE` / `AC` | `RESPONSABLE_INSCRIPTO` (1) |
|
|
149
|
+
| IVA (impuesto 30) `EXENTO` / `EXENTO EN TRAMITE` / `EX`, o impuesto 32 | `EXENTO` (4) |
|
|
150
|
+
| Impuesto 34 (IVA no alcanzado) | `IVA_NO_ALCANZADO` (15) |
|
|
151
|
+
| Ninguno de los anteriores, constancia no emitida o con errores | `null` (con el motivo) |
|
|
152
|
+
|
|
153
|
+
Los impuestos en `BAJA PROVISORIA`, `BAJA DEFINITIVA` o `NO APORTANTE` no cuentan (un impuesto 20
|
|
154
|
+
en baja no se considera monotributo aunque haya categoria). Si el padron no alcanza, devuelve `null`
|
|
155
|
+
en lugar de asumir consumidor final: decidilo segun la operacion. Si ARCA informo
|
|
156
|
+
`errorRegimenGeneral` / `errorMonotributo`, el motivo los incluye.
|
|
136
157
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
158
|
+
Fuentes: manual de `ws_sr_constancia_inscripcion` v4.1 (impuestos 20 y 30, estado `AC`, categorias
|
|
159
|
+
de monotributo del anexo 5.3) y manual de `ws_sr_padron_a4` v1.3 §5.3 (TipoEstado). Los impuestos 32
|
|
160
|
+
y 34 no figuran en los manuales: se reconocen por id o por su descripcion. La categoria 98
|
|
161
|
+
(`B ASOCIADO COOPERATIVA`) se trata como monotributo comun.
|
|
140
162
|
|
|
141
|
-
#### `getPersonaA13(cuit
|
|
163
|
+
#### `getPersonaA13(cuit): Promise<PersonaA13>` y `getPersonaA13V2(cuit)`
|
|
142
164
|
|
|
143
|
-
Datos basicos via `ws_sr_padron_a13`.
|
|
144
|
-
|
|
165
|
+
Datos basicos via `ws_sr_padron_a13`. `getPersona` falla con `reason: 'inactiva'` si la clave esta
|
|
166
|
+
inactiva; `getPersonaV2` (manual A13 v1.4) devuelve los datos igual (con `estadoClave: 'INACTIVO'`).
|
|
145
167
|
|
|
146
|
-
#### `
|
|
168
|
+
#### `getIdPersonaListByDocumento(documento): Promise<string[]>`
|
|
169
|
+
|
|
170
|
+
CUIT/CUIL asociados a un numero de documento (A13). Acepta puntos y espacios (`'11.709.676'`).
|
|
171
|
+
Devuelve `[]` si ARCA no informa claves.
|
|
172
|
+
|
|
173
|
+
#### `getPersona(cuit): Promise<PersonaA4>`
|
|
147
174
|
|
|
148
175
|
Obtiene los datos completos de un contribuyente via ws_sr_padron_a4. Autentica automaticamente con WSAA.
|
|
149
176
|
|
|
150
177
|
```typescript
|
|
151
|
-
const contribuyente = await padron.getPersona('
|
|
178
|
+
const contribuyente = await padron.getPersona('20111111112');
|
|
152
179
|
```
|
|
153
180
|
|
|
154
|
-
#### `getPersonaBasic(cuit
|
|
181
|
+
#### `getPersonaBasic(cuit): Promise<PersonaA10>`
|
|
155
182
|
|
|
156
183
|
Obtiene los datos basicos de un contribuyente via ws_sr_padron_a10.
|
|
157
184
|
|
|
158
185
|
```typescript
|
|
159
|
-
const contribuyenteBasico = await padron.getPersonaBasic('
|
|
186
|
+
const contribuyenteBasico = await padron.getPersonaBasic('20111111112');
|
|
160
187
|
```
|
|
161
188
|
|
|
162
189
|
#### `getParametros(collection: string): Promise<ParameterRecord[]>`
|
|
163
190
|
|
|
164
|
-
Obtiene una tabla de parametros via ws_sr_padron_a100.
|
|
191
|
+
Obtiene una tabla de parametros via ws_sr_padron_a100. `id`, `descripcion` y los `value` de los
|
|
192
|
+
atributos se devuelven tal cual los envia ARCA (`"10.50"` sigue siendo `"10.50"`). Lanza
|
|
193
|
+
`ArcaPadronError` si la respuesta no trae `parameterCollection`; una coleccion vacia devuelve `[]`.
|
|
165
194
|
|
|
166
195
|
```typescript
|
|
167
196
|
import { CollectionName } from '@ramiidv/arca-padron';
|
|
@@ -171,15 +200,20 @@ const tiposDocumento = await padron.getParametros(CollectionName.TIPO_DOCUMENTO)
|
|
|
171
200
|
const tiposRelacion = await padron.getParametros(CollectionName.TIPO_RELACION);
|
|
172
201
|
```
|
|
173
202
|
|
|
174
|
-
Colecciones disponibles (enum `CollectionName`,
|
|
203
|
+
Colecciones disponibles (enum `CollectionName`, manual A100 v2.1 anexo 5.1): `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`, `AUTONOMO_MONOTRIBUTO`, `REGIMEN`, `TIPO_REGIMEN`, `CARACTERIZACION`, `TIPO_ARCHIVO`, `ACTIVIDAD_RUBRO`, `RUBRO_ACTIVIDAD`, `ACTIVIDAD_OCUPACIONAL`.
|
|
204
|
+
La coleccion de categorias de monotributo no se incluye porque su nombre aparece cortado en el manual.
|
|
175
205
|
|
|
176
|
-
#### `status(): Promise<
|
|
206
|
+
#### `status(): Promise<PadronStatus>`
|
|
177
207
|
|
|
178
|
-
Verifica el estado de los servicios (no requiere autenticacion).
|
|
208
|
+
Verifica el estado de los servicios (`dummy`, no requiere autenticacion). Consulta los cinco en
|
|
209
|
+
paralelo con `Promise.allSettled`: cada uno es un `PromiseSettledResult<ServerStatus>`, asi que un
|
|
210
|
+
servicio caido no oculta el estado de los demas.
|
|
179
211
|
|
|
180
212
|
```typescript
|
|
181
|
-
const
|
|
182
|
-
|
|
213
|
+
const estado = await padron.status();
|
|
214
|
+
if (estado.a4.status === 'fulfilled')
|
|
215
|
+
console.log(estado.a4.value.appserver); // "OK"
|
|
216
|
+
else console.error('A4 caido:', estado.a4.reason);
|
|
183
217
|
```
|
|
184
218
|
|
|
185
219
|
### Acceso a clientes de bajo nivel
|
|
@@ -187,7 +221,9 @@ console.log(estadoServicios.a4.appserver); // "OK"
|
|
|
187
221
|
Para casos avanzados, se pueden usar los clientes individuales directamente:
|
|
188
222
|
|
|
189
223
|
```typescript
|
|
190
|
-
const padron = new ArcaPadron({
|
|
224
|
+
const padron = new ArcaPadron({
|
|
225
|
+
/* ... */
|
|
226
|
+
});
|
|
191
227
|
|
|
192
228
|
// Obtener ticket de acceso manualmente
|
|
193
229
|
const ticket = await padron.wsaa.getAccessTicket('ws_sr_padron_a4');
|
|
@@ -195,11 +231,12 @@ const ticket = await padron.wsaa.getAccessTicket('ws_sr_padron_a4');
|
|
|
195
231
|
const credenciales = {
|
|
196
232
|
Token: ticket.token,
|
|
197
233
|
Sign: ticket.sign,
|
|
198
|
-
CuitRepresentada: '
|
|
234
|
+
CuitRepresentada: '20123456786',
|
|
199
235
|
};
|
|
200
236
|
|
|
201
237
|
// Llamar directamente al servicio
|
|
202
|
-
const contribuyente = await padron.a4.getPersona(credenciales, '
|
|
238
|
+
const contribuyente = await padron.a4.getPersona(credenciales, '20111111112');
|
|
239
|
+
// Tambien: padron.a5.getPersona / getPersonaList, padron.a13.getPersonaV2, padron.a100.getParameterCollectionByName
|
|
203
240
|
```
|
|
204
241
|
|
|
205
242
|
Clientes disponibles: `padron.wsaa`, `padron.a5` (constancia), `padron.a4`, `padron.a10`,
|
|
@@ -207,6 +244,10 @@ Clientes disponibles: `padron.wsaa`, `padron.a5` (constancia), `padron.a4`, `pad
|
|
|
207
244
|
|
|
208
245
|
## Tipos de respuesta
|
|
209
246
|
|
|
247
|
+
Los campos `xs:string` de los WSDL (codigos postales, datos adicionales, numeros de inscripcion,
|
|
248
|
+
documentos) y los `xs:long` (CUIT, actividades, telefonos) se devuelven siempre como `string`, aunque
|
|
249
|
+
sean numericos. Los elementos `xsi:nil` se tratan como ausentes.
|
|
250
|
+
|
|
210
251
|
### PersonaA4 (datos completos)
|
|
211
252
|
|
|
212
253
|
```typescript
|
|
@@ -284,50 +325,57 @@ interface ParameterRecord {
|
|
|
284
325
|
|
|
285
326
|
interface ParameterAttribute {
|
|
286
327
|
name: string;
|
|
287
|
-
value
|
|
328
|
+
value?: string; // tal cual lo envia ARCA (xs:string)
|
|
288
329
|
}
|
|
289
330
|
```
|
|
290
331
|
|
|
291
332
|
## Manejo de errores
|
|
292
333
|
|
|
293
|
-
El SDK usa una jerarquia de errores de 4 clases:
|
|
294
|
-
|
|
295
334
|
```
|
|
296
335
|
Error
|
|
297
336
|
└── ArcaError (base, de @ramiidv/arca-common)
|
|
298
|
-
├── ArcaPadronError
|
|
337
|
+
├── ArcaPadronError (respuesta de ARCA sin un dato obligatorio, ej: personaReturn sin persona)
|
|
299
338
|
├── ArcaAuthError (errores de WSAA)
|
|
300
339
|
│ └── ArcaTicketVigenteError (TA vigente que no esta en memoria ni en el storage)
|
|
340
|
+
├── ArcaValidationError (CUIT o documento invalido: no se llamo a ARCA)
|
|
301
341
|
├── ArcaServiceError
|
|
302
|
-
│ └── ArcaPadronServiceError (errores de negocio)
|
|
303
|
-
└── ArcaSoapError (
|
|
342
|
+
│ └── ArcaPadronServiceError (errores de negocio: reason + errors + cause)
|
|
343
|
+
└── ArcaSoapError (HTTP/red/timeout y SOAP Faults no reconocidos)
|
|
304
344
|
```
|
|
305
345
|
|
|
306
346
|
Todos tienen un `code` estable y `instanceof` funciona aunque haya mas de una copia del paquete
|
|
307
|
-
cargada. ARCA informa
|
|
308
|
-
`
|
|
347
|
+
cargada. ARCA informa los errores de negocio como SOAP Fault; el SDK reconoce los textos de los
|
|
348
|
+
manuales y los convierte en `ArcaPadronServiceError` con un `reason` tipado (el `ArcaSoapError`
|
|
349
|
+
original queda en `cause`). No se reintentan.
|
|
350
|
+
|
|
351
|
+
| `reason` | Mensaje de ARCA |
|
|
352
|
+
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
353
|
+
| `inexistente` | "La Clave (CUIT/CUIL) consultada es inexistente", "No existe persona con ese Id" |
|
|
354
|
+
| `inactiva` | "La clave (CUIT/CUIL) consultada se encuentra INACTIVA" (A13: usar `getPersonaA13V2`) |
|
|
355
|
+
| `id_invalido` | "El Id de la persona no es valido" |
|
|
356
|
+
| `no_autorizado` | "No autorizado, par token/sign invalido.", "Falta token y/o sign.", "Debe enviar la CUIT representada", "Este token no le permite actuar en representacion de la CUIT ..." |
|
|
357
|
+
|
|
358
|
+
Un SOAP Fault con otro texto queda como `ArcaSoapError` (con `faultString`). En la constancia de
|
|
359
|
+
inscripcion, los motivos por los que ARCA no emite la constancia (CUIT limitada, domicilio
|
|
360
|
+
incompleto, etc.) no son excepciones: vienen en `errorConstancia`, `errorRegimenGeneral` y
|
|
361
|
+
`errorMonotributo`.
|
|
309
362
|
|
|
310
363
|
```typescript
|
|
311
|
-
import {
|
|
312
|
-
ArcaAuthError,
|
|
313
|
-
ArcaPadronServiceError,
|
|
314
|
-
ArcaSoapError,
|
|
315
|
-
} from '@ramiidv/arca-padron';
|
|
364
|
+
import { ArcaAuthError, ArcaPadronServiceError, ArcaSoapError, ArcaValidationError } from '@ramiidv/arca-padron';
|
|
316
365
|
|
|
317
366
|
try {
|
|
318
|
-
await padron.getPersona('
|
|
367
|
+
await padron.getPersona('20111111112');
|
|
319
368
|
} catch (error) {
|
|
320
|
-
if (error instanceof
|
|
321
|
-
|
|
322
|
-
console.error('Error de autenticacion:', error.message);
|
|
369
|
+
if (error instanceof ArcaValidationError) {
|
|
370
|
+
console.error('CUIT invalida:', error.message);
|
|
323
371
|
} else if (error instanceof ArcaPadronServiceError) {
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
372
|
+
if (error.reason === 'inexistente') console.error('La CUIT no existe');
|
|
373
|
+
else if (error.reason === 'inactiva') console.error('La CUIT esta inactiva');
|
|
374
|
+
else console.error(error.errors[0]?.msg);
|
|
375
|
+
} else if (error instanceof ArcaAuthError) {
|
|
376
|
+
console.error('Error de autenticacion:', error.message);
|
|
328
377
|
} else if (error instanceof ArcaSoapError) {
|
|
329
|
-
|
|
330
|
-
console.error('Error HTTP:', error.statusCode, error.message);
|
|
378
|
+
console.error('Error HTTP/red:', error.statusCode, error.message);
|
|
331
379
|
}
|
|
332
380
|
}
|
|
333
381
|
```
|
|
@@ -367,20 +415,19 @@ const padron = new ArcaPadron({
|
|
|
367
415
|
## Enums utiles
|
|
368
416
|
|
|
369
417
|
```typescript
|
|
370
|
-
import {
|
|
371
|
-
Provincia,
|
|
372
|
-
TipoDomicilio,
|
|
373
|
-
TipoPersona,
|
|
374
|
-
ImpuestoId,
|
|
375
|
-
CollectionName,
|
|
376
|
-
} from '@ramiidv/arca-padron';
|
|
418
|
+
import { Provincia, TipoDomicilio, TipoPersona, ImpuestoId, CollectionName } from '@ramiidv/arca-padron';
|
|
377
419
|
|
|
378
420
|
// Verificar si el contribuyente esta inscripto en IVA (mejor: condicionIvaDesdePadron)
|
|
379
421
|
const tieneIva = contribuyente.impuesto?.some(
|
|
380
|
-
(imp) => imp.idImpuesto === ImpuestoId.IVA_RESPONSABLE_INSCRIPTO && imp.estado
|
|
422
|
+
(imp) => imp.idImpuesto === ImpuestoId.IVA_RESPONSABLE_INSCRIPTO && imp.estado?.startsWith('ACTIVO'),
|
|
381
423
|
);
|
|
382
424
|
|
|
383
|
-
// ImpuestoId.MONOTRIBUTO = 20
|
|
425
|
+
// ImpuestoId.MONOTRIBUTO = 20, IVA_RESPONSABLE_INSCRIPTO = 30, BIENES_PERSONALES = 180,
|
|
426
|
+
// EMPLEADOR = 301, AUTONOMOS = 308 (manuales de ARCA). IVA_EXENTO (32) e IVA_NO_ALCANZADO (34)
|
|
427
|
+
// no figuran en los manuales del padron.
|
|
428
|
+
//
|
|
429
|
+
// `TipoDocumento` esta deprecado: es `DocTipo` (codigos numericos de WSFEv1), no el
|
|
430
|
+
// `tipoDocumento` string del padron ("DNI", "LC"...).
|
|
384
431
|
```
|
|
385
432
|
|
|
386
433
|
## Requisitos
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { ArcaSdkBase } 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, PadronServicio, PadronStatus, ParameterRecord, PersonaA4, PersonaA5, PersonaA10, PersonaA13 } 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 extends ArcaSdkBase<PadronServicio> {
|
|
34
|
+
/** Low-level Constancia de Inscripción (ex Padrón A5) client */
|
|
35
|
+
readonly a5: PadronA5Client;
|
|
36
|
+
/** Low-level Padrón A4 client for direct access */
|
|
37
|
+
readonly a4: PadronA4Client;
|
|
38
|
+
/** Low-level Padrón A10 client for direct access */
|
|
39
|
+
readonly a10: PadronA10Client;
|
|
40
|
+
/** Low-level Padrón A13 client for direct access */
|
|
41
|
+
readonly a13: PadronA13Client;
|
|
42
|
+
/** Low-level Padrón A100 client for direct access */
|
|
43
|
+
readonly a100: PadronA100Client;
|
|
44
|
+
/** @throws ArcaValidationError si la CUIT representada es inválida. */
|
|
45
|
+
constructor(config: ArcaPadronConfig);
|
|
46
|
+
/**
|
|
47
|
+
* Constancia de inscripción (ws_sr_constancia_inscripcion, ex Padrón A5,
|
|
48
|
+
* `getPersona_v2`): datos generales, domicilio fiscal, impuestos del régimen
|
|
49
|
+
* general y monotributo. Combinar con `condicionIvaDesdePadron` para facturar.
|
|
50
|
+
* @param cuit - CUIT a consultar (con o sin guiones)
|
|
51
|
+
* @throws ArcaValidationError si la CUIT es inválida (dígito verificador)
|
|
52
|
+
* @throws ArcaPadronServiceError si ARCA informa la CUIT inexistente, inactiva, etc.
|
|
53
|
+
*/
|
|
54
|
+
getConstanciaInscripcion(cuit: string | number, call?: CallOptions): Promise<PersonaA5>;
|
|
55
|
+
/**
|
|
56
|
+
* Constancias de inscripción de hasta 250 CUITs en una llamada
|
|
57
|
+
* (`getPersonaList_v2`). Las CUITs inexistentes vuelven con `errorConstancia`
|
|
58
|
+
* ("No existe persona con ese Id") en lugar de hacer fallar la consulta.
|
|
59
|
+
*/
|
|
60
|
+
getConstanciasInscripcion(cuits: Array<string | number>, call?: CallOptions): Promise<PersonaA5[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Datos completos de un contribuyente (Padrón A4).
|
|
63
|
+
* @param cuit - CUIT/CUIL a consultar (con o sin guiones)
|
|
64
|
+
*/
|
|
65
|
+
getPersona(cuit: string | number, call?: CallOptions): Promise<PersonaA4>;
|
|
66
|
+
/**
|
|
67
|
+
* Datos básicos de un contribuyente (Padrón A10).
|
|
68
|
+
* @param cuit - CUIT/CUIL a consultar (con o sin guiones)
|
|
69
|
+
*/
|
|
70
|
+
getPersonaBasic(cuit: string | number, call?: CallOptions): Promise<PersonaA10>;
|
|
71
|
+
/**
|
|
72
|
+
* Datos básicos de un contribuyente (Padrón A13, `getPersona`). Con la clave
|
|
73
|
+
* inactiva ARCA responde con error (`reason: 'inactiva'`): ver `getPersonaA13V2`.
|
|
74
|
+
* @param cuit - CUIT/CUIL a consultar (con o sin guiones)
|
|
75
|
+
*/
|
|
76
|
+
getPersonaA13(cuit: string | number, call?: CallOptions): Promise<PersonaA13>;
|
|
77
|
+
/**
|
|
78
|
+
* Datos básicos de un contribuyente (Padrón A13, `getPersonaV2`): responde
|
|
79
|
+
* también si la clave está INACTIVA (manual A13 v1.4).
|
|
80
|
+
*/
|
|
81
|
+
getPersonaA13V2(cuit: string | number, call?: CallOptions): Promise<PersonaA13>;
|
|
82
|
+
/**
|
|
83
|
+
* CUITs/CUILs asociados a un número de documento (Padrón A13).
|
|
84
|
+
* @param documento - Número de documento (DNI); se aceptan puntos y espacios
|
|
85
|
+
*/
|
|
86
|
+
getIdPersonaListByDocumento(documento: string | number, call?: CallOptions): Promise<string[]>;
|
|
87
|
+
/**
|
|
88
|
+
* Tabla de parámetros (Padrón A100) por nombre de colección.
|
|
89
|
+
* @param collection - Nombre de la colección (ej: CollectionName.PROVINCIA)
|
|
90
|
+
*/
|
|
91
|
+
getParametros(collection: string, call?: CallOptions): Promise<ParameterRecord[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Estado de los servicios de Padrón (`dummy`, sin autenticación). Consulta
|
|
94
|
+
* todos en paralelo y devuelve el resultado de cada uno por separado: un
|
|
95
|
+
* servicio caído no oculta el estado de los demás.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* const s = await padron.status();
|
|
100
|
+
* if (s.a4.status === 'fulfilled') console.log(s.a4.value.appserver);
|
|
101
|
+
* else console.error(s.a4.reason);
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
status(call?: CallOptions): Promise<PadronStatus>;
|
|
105
|
+
private getAuth;
|
|
106
|
+
}
|
|
107
|
+
//# 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,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,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,cAAc,EACd,YAAY,EACZ,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EAEX,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,UAAW,SAAQ,WAAW,CAAC,cAAc,CAAC;IACzD,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,uEAAuE;gBAC3D,MAAM,EAAE,gBAAgB;IAwBpC;;;;;;;OAOG;IACG,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAM7F;;;;OAIG;IACG,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAMxG;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAM/E;;;OAGG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAMrF;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAMnF;;;OAGG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAMrF;;;OAGG;IACG,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMpG;;;OAGG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAMvF;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;YAgBzC,OAAO;CAQtB"}
|