arca.rb 1.1.1 → 1.1.2
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.
- checksums.yaml +4 -4
- data/.devcontainer/devcontainer.json +20 -10
- data/.mise.toml +4 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +12 -3
- data/Gemfile.lock +1 -1
- data/README.md +29 -0
- data/bin/devcontainer +28 -0
- data/lib/arca/ve_consumer.rb +131 -0
- data/lib/arca/version.rb +1 -1
- data/lib/arca.rb +1 -0
- data/test/arca/ve_consumer_test.rb +128 -0
- data/test/fixtures/ve_consumer/consultar_comunicaciones/soap_fault.xml +13 -0
- data/test/fixtures/ve_consumer/consultar_comunicaciones/success.xml +28 -0
- data/test/fixtures/ve_consumer/consultar_estados/success.xml +17 -0
- data/test/fixtures/ve_consumer/consultar_sistemas_publicadores/success.xml +15 -0
- data/test/fixtures/ve_consumer/consumir_comunicacion/success.xml +19 -0
- data/test/fixtures/ve_consumer/consumir_comunicacion/with_adjuntos.xml +34 -0
- data/test/fixtures/ve_consumer/ve_consumer.wsdl +256 -0
- metadata +13 -3
- data/.devcontainer/Dockerfile +0 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 83fb68cdac99771719d984f0140a1ccc3a68efa3c7b31aeb73dddc538514f76d
|
|
4
|
+
data.tar.gz: 543051f05bdade2f33a8dd2bd9ef7c5a3dba1855e213fa8821a44b8c4f7226f0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 53d5c866b44f162ee646258f6e6aad01a930c21efeb339775d703307b287c1736fbe4e298600d98e22b96eafaa720180942b84b5cd0b15ed9087e18f31e78244
|
|
7
|
+
data.tar.gz: edf788cf929d1dc23d1c22f9309aefa37e6f0a2d92cb3161e920f2a0b71d6ace6fe8d40b7eea74069b12ce7bf1ba9bcfd6789f746e39ba7c6fc4070dd3b64dd0
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"
|
|
2
|
+
"name": "arca.rb",
|
|
3
|
+
"runArgs": [
|
|
4
|
+
"--name",
|
|
5
|
+
"arca.rb"
|
|
6
|
+
],
|
|
7
|
+
"image": "ghcr.io/rails/devcontainer/images/ruby:4.0.0",
|
|
8
|
+
"workspaceFolder": "/workspaces/arca.rb",
|
|
9
|
+
"workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/arca.rb,type=bind,consistency=cached",
|
|
10
|
+
"remoteEnv": {
|
|
11
|
+
"ANTHROPIC_API_KEY": "${localEnv:ANTHROPIC_API_KEY}"
|
|
12
|
+
},
|
|
13
|
+
"postCreateCommand": "bin/devcontainer",
|
|
14
|
+
"customizations": {
|
|
15
|
+
"vscode": {
|
|
16
|
+
"extensions": [
|
|
17
|
+
"Shopify.ruby-lsp",
|
|
18
|
+
"anthropic.claude-code"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
}
|
|
12
22
|
}
|
data/.mise.toml
CHANGED
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4.0.0
|
data/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
# Arca Changelog
|
|
2
2
|
|
|
3
|
+
## [1.1.2] 2025-03-02
|
|
4
|
+
|
|
5
|
+
- **VEConsumer** — Nuevo servicio: Ventanilla Electrónica - Consumir Comunicaciones (`veconsumerws`). Permite consultar y leer comunicaciones enviadas a un contribuyente vía SOAP 1.2.
|
|
6
|
+
- `consultar_comunicaciones(filter = {})` — consulta paginada con filtros opcionales (estado, fechas, sistema publicador, referencias, etc.).
|
|
7
|
+
- `consumir_comunicacion(id, incluir_adjuntos: false)` — recupera una comunicación y la marca como leída; con `incluir_adjuntos: true` extrae el contenido binario vía MTOM en `adjunto[:content]`.
|
|
8
|
+
- `consultar_sistemas_publicadores(id_sistema_publicador: nil)` — lista sistemas publicadores habilitados.
|
|
9
|
+
- `consultar_estados` — lista los posibles estados (1=No leída, 2=Leída).
|
|
10
|
+
- Los errores SOAP Fault del servicio se traducen a `ResponseError` con soporte para `e.code?`.
|
|
11
|
+
|
|
3
12
|
## [1.1.1] - 2025-02-20
|
|
4
13
|
|
|
5
|
-
- **WSFE:**
|
|
6
|
-
- **WSFE:**
|
|
7
|
-
- **WSFE:**
|
|
14
|
+
- **WSFE:** Agregado `tipos_condicion_iva_receptor(clase_cmp: nil)` para consultar condiciones de IVA del receptor con filtro opcional por clase de comprobante.
|
|
15
|
+
- **WSFE:** Agregado `actividades` para obtener el listado de actividades económicas.
|
|
16
|
+
- **WSFE:** Agregado `consultar_caea_sin_movimientos(caea, pto_vta)` para consultar CAEA sin movimientos.
|
|
8
17
|
|
|
9
18
|
## [1.1.0]
|
|
10
19
|
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -13,6 +13,7 @@ Cliente Ruby para integrar webservices SOAP de AFIP y ARCA en Argentina. Soporta
|
|
|
13
13
|
- **Autenticación WSAA** - Manejo automático de tokens y certificados
|
|
14
14
|
- **Producción y homologación** - Ambientes configurables
|
|
15
15
|
- **Padrón AFIP** - Consulta de contribuyentes (A4, A5, A100)
|
|
16
|
+
- **Ventanilla Electrónica (VEConsumer)** - Consulta y lectura de comunicaciones de AFIP
|
|
16
17
|
|
|
17
18
|
## Requisitos
|
|
18
19
|
|
|
@@ -72,6 +73,7 @@ Opción del constructor: `env: :development` o `env: :production` (symbol o stri
|
|
|
72
73
|
| WS Constancia Inscripción | `Arca::WSConstanciaInscripcion` | Constancia de inscripción |
|
|
73
74
|
| Padrón A4 / A5 / A100 | `Arca::PersonaServiceA4`, `PersonaServiceA5`, `PersonaServiceA100` | Consulta padrón de contribuyentes |
|
|
74
75
|
| WConsDeclaracion | `Arca::WConsDeclaracion` | Declaraciones aduaneras |
|
|
76
|
+
| VEConsumer | `Arca::VEConsumer` | Ventanilla Electrónica — comunicaciones del contribuyente |
|
|
75
77
|
|
|
76
78
|
## Uso
|
|
77
79
|
|
|
@@ -173,6 +175,33 @@ ws = Arca::WSConstanciaInscripcion.new(env: :development, cuit: '20123456789', k
|
|
|
173
175
|
ws.get_persona('20123456789')
|
|
174
176
|
```
|
|
175
177
|
|
|
178
|
+
### VEConsumer (Ventanilla Electrónica)
|
|
179
|
+
```ruby
|
|
180
|
+
ws = Arca::VEConsumer.new(env: :development, cuit: '20123456789', key: key, cert: cert)
|
|
181
|
+
|
|
182
|
+
# Consultar comunicaciones (paginado, con filtros opcionales)
|
|
183
|
+
r = ws.consultar_comunicaciones(estado: 1, pagina: 1)
|
|
184
|
+
r[:items] # Array de ComunicacionSimplificada
|
|
185
|
+
r[:total_paginas] # total de páginas
|
|
186
|
+
|
|
187
|
+
# Leer una comunicación (la marca como leída)
|
|
188
|
+
com = ws.consumir_comunicacion(12_061_068)
|
|
189
|
+
com[:estado] # "2" (leída)
|
|
190
|
+
com[:adjuntos] # [] si no tiene adjuntos
|
|
191
|
+
|
|
192
|
+
# Leer con adjuntos binarios vía MTOM
|
|
193
|
+
com = ws.consumir_comunicacion(12_061_068, incluir_adjuntos: true)
|
|
194
|
+
com[:adjuntos][0][:filename] # "informe.pdf"
|
|
195
|
+
com[:adjuntos][0][:content] # contenido binario (String)
|
|
196
|
+
|
|
197
|
+
# Sistemas publicadores habilitados
|
|
198
|
+
ws.consultar_sistemas_publicadores
|
|
199
|
+
ws.consultar_sistemas_publicadores(id_sistema_publicador: 88)
|
|
200
|
+
|
|
201
|
+
# Estados posibles (1=No leída, 2=Leída)
|
|
202
|
+
ws.consultar_estados
|
|
203
|
+
```
|
|
204
|
+
|
|
176
205
|
### WConsDeclaracion (Declaraciones aduaneras)
|
|
177
206
|
```ruby
|
|
178
207
|
ws = Arca::WConsDeclaracion.new(cuit: '20123456789', key: key, cert: cert, env: :development)
|
data/bin/devcontainer
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
export DEBIAN_FRONTEND=noninteractive
|
|
5
|
+
|
|
6
|
+
# Add Charm apt repo for gum and gitleaks
|
|
7
|
+
sudo mkdir -p /etc/apt/keyrings
|
|
8
|
+
curl -fsSL https://repo.charm.sh/apt/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/charm.gpg > /dev/null
|
|
9
|
+
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list > /dev/null
|
|
10
|
+
|
|
11
|
+
sudo apt-get update
|
|
12
|
+
sudo apt-get install -y --no-install-recommends \
|
|
13
|
+
ca-certificates \
|
|
14
|
+
curl \
|
|
15
|
+
gh \
|
|
16
|
+
gum \
|
|
17
|
+
zlib1g-dev
|
|
18
|
+
|
|
19
|
+
sudo rm -rf /var/lib/apt/lists/*
|
|
20
|
+
|
|
21
|
+
if ! command -v mise >/dev/null 2>&1; then
|
|
22
|
+
curl -fsSL https://mise.jdx.dev/install.sh | sh
|
|
23
|
+
ln -sfn "$HOME/.local/bin/mise" /usr/local/bin/mise
|
|
24
|
+
mise trust
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
# Claude Code CLI
|
|
28
|
+
curl -fsSL https://claude.ai/install.sh | bash
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# VEConsumer: Web Service de Ventanilla Electrónica - Consumir Comunicaciones (AFIP).
|
|
4
|
+
# Permite consultar y leer comunicaciones enviadas a un contribuyente.
|
|
5
|
+
# Documentación: VE-CU-WS-Consumir-Comunicaciones v1.3.0.
|
|
6
|
+
# Id del servicio WSAA: "veconsumerws".
|
|
7
|
+
module Arca
|
|
8
|
+
class VEConsumer
|
|
9
|
+
WSDL = {
|
|
10
|
+
development: "https://stable-middleware-tecno-ext.afip.gob.ar/ve-ws/services/veconsumer?wsdl",
|
|
11
|
+
production: "https://infraestructura.afip.gob.ar/ve-ws/services/veconsumer?wsdl",
|
|
12
|
+
test: "#{Root}/test/fixtures/ve_consumer/ve_consumer.wsdl"
|
|
13
|
+
}.freeze
|
|
14
|
+
|
|
15
|
+
attr_reader :wsaa, :cuit
|
|
16
|
+
|
|
17
|
+
def initialize(options = {})
|
|
18
|
+
@cuit = normalize_cuit(options[:cuit])
|
|
19
|
+
@wsaa = WSAA.new options.merge(service: "veconsumerws")
|
|
20
|
+
@client = Client.new Hash(options[:savon]).reverse_merge(
|
|
21
|
+
wsdl: WSDL[@wsaa.env],
|
|
22
|
+
soap_version: 2,
|
|
23
|
+
convert_request_keys_to: :camelcase
|
|
24
|
+
)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Consulta comunicaciones del contribuyente con filtros opcionales.
|
|
28
|
+
# Claves opcionales del filter: estado, fecha_desde, fecha_hasta,
|
|
29
|
+
# comunicacion_id_desde, comunicacion_id_hasta, tiene_adjunto,
|
|
30
|
+
# sistema_publicador_id, pagina, resultados_por_pagina,
|
|
31
|
+
# referencia1, referencia2.
|
|
32
|
+
# Retorna un hash con :pagina, :total_paginas, :items_por_pagina,
|
|
33
|
+
# :total_items e :items (Array de ComunicacionSimplificada).
|
|
34
|
+
def consultar_comunicaciones(filter = {})
|
|
35
|
+
r = raw_request(:consultar_comunicaciones, auth_request.merge(filter: filter))
|
|
36
|
+
paginada = r[:respuesta_paginada]
|
|
37
|
+
paginada.merge(items: get_array(paginada[:items], :comunicacion_simplificada))
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Recupera una comunicación por id y la marca como leída.
|
|
41
|
+
# Con incluir_adjuntos: true se incluyen los adjuntos vía MTOM en la respuesta;
|
|
42
|
+
# el contenido binario de cada adjunto queda en :content como String.
|
|
43
|
+
# Retorna la Comunicacion con :adjuntos como Array.
|
|
44
|
+
def consumir_comunicacion(id_comunicacion, incluir_adjuntos: false)
|
|
45
|
+
response = client_request(:consumir_comunicacion, auth_request.merge(
|
|
46
|
+
id_comunicacion: id_comunicacion,
|
|
47
|
+
incluir_adjuntos: incluir_adjuntos
|
|
48
|
+
))
|
|
49
|
+
resp = response.to_hash[:consumir_comunicacion_response]
|
|
50
|
+
raise ServerError, "Unexpected response structure" unless resp
|
|
51
|
+
|
|
52
|
+
comunicacion = resp[:comunicacion]
|
|
53
|
+
comunicacion.merge(adjuntos: build_adjuntos(comunicacion[:adjuntos], response.attachments))
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Lista los sistemas publicadores habilitados en Ventanilla Electrónica.
|
|
57
|
+
# Con id_sistema_publicador filtra por sistema específico.
|
|
58
|
+
def consultar_sistemas_publicadores(id_sistema_publicador: nil)
|
|
59
|
+
params = auth_request
|
|
60
|
+
params = params.merge(id_sistema_publicador: id_sistema_publicador) if id_sistema_publicador
|
|
61
|
+
r = raw_request(:consultar_sistemas_publicadores, params)
|
|
62
|
+
Array.wrap(r.dig(:sistemas, :sistema))
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Lista los posibles estados de una comunicación. 1=No leída, 2=Leída.
|
|
66
|
+
def consultar_estados
|
|
67
|
+
r = raw_request(:consultar_estados, auth_request)
|
|
68
|
+
Array.wrap(r.dig(:estados, :estado))
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
private
|
|
72
|
+
|
|
73
|
+
def auth_request
|
|
74
|
+
{ auth_request: @wsaa.auth.merge(cuit_representada: cuit) }
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def client_request(action, body)
|
|
78
|
+
@client.request(action, body)
|
|
79
|
+
rescue ServerError => e
|
|
80
|
+
raise parse_fault(e)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def raw_request(action, body)
|
|
84
|
+
resp = client_request(action, body).to_hash[:"#{action}_response"]
|
|
85
|
+
raise ServerError, "Unexpected response structure" unless resp
|
|
86
|
+
|
|
87
|
+
resp
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def parse_fault(error)
|
|
91
|
+
match = error.message.match(/Error (\d+): (.+)/)
|
|
92
|
+
return error unless match
|
|
93
|
+
|
|
94
|
+
ResponseError.new([ { code: match[1], msg: match[2].strip } ])
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def build_adjuntos(adjuntos_element, mtom_parts)
|
|
98
|
+
return [] unless adjuntos_element && adjuntos_element[:adjunto]
|
|
99
|
+
|
|
100
|
+
items = Array.wrap(adjuntos_element[:adjunto])
|
|
101
|
+
return items if mtom_parts.empty?
|
|
102
|
+
|
|
103
|
+
by_cid = mtom_parts.each_with_object({}) do |part, h|
|
|
104
|
+
cid = part.header[:content_id].to_s.tr("<>", "")
|
|
105
|
+
h[cid] = part.body.decoded
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
items.map do |adj|
|
|
109
|
+
href = adj.dig(:content, :include, :"@href").to_s
|
|
110
|
+
next adj unless href.start_with?("cid:")
|
|
111
|
+
|
|
112
|
+
cid = href.delete_prefix("cid:")
|
|
113
|
+
adj.merge(content: by_cid.fetch(cid, adj[:content]))
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def get_array(container, element)
|
|
118
|
+
return [] unless container && container[element]
|
|
119
|
+
|
|
120
|
+
Array.wrap(container[element])
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def normalize_cuit(value)
|
|
124
|
+
if value.nil? || value == ""
|
|
125
|
+
0
|
|
126
|
+
else
|
|
127
|
+
value.to_s.gsub(/\D/, "").to_i
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
data/lib/arca/version.rb
CHANGED
data/lib/arca.rb
CHANGED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "test_helper"
|
|
4
|
+
|
|
5
|
+
module Arca
|
|
6
|
+
class VEConsumerTest < TestCase
|
|
7
|
+
def ta
|
|
8
|
+
@ta ||= { token: "t", sign: "s" }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def ws
|
|
12
|
+
@ws ||= VEConsumer.new(cuit: "20111111112").tap { |w| w.wsaa.stubs auth: ta }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_consultar_comunicaciones
|
|
16
|
+
savon.expects(:consultar_comunicaciones)
|
|
17
|
+
.with(message: { auth_request: ta.merge(cuit_representada: 20_111_111_112), filter: {} })
|
|
18
|
+
.returns(fixture("ve_consumer/consultar_comunicaciones/success"))
|
|
19
|
+
r = ws.consultar_comunicaciones
|
|
20
|
+
assert_equal "1", r[:pagina]
|
|
21
|
+
assert_equal "1", r[:total_paginas]
|
|
22
|
+
assert_equal 1, r[:items].size
|
|
23
|
+
assert_hash_includes r[:items][0], id_comunicacion: "1", estado_desc: "Comunicacion Leida"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_consultar_comunicaciones_con_filtros
|
|
27
|
+
savon.expects(:consultar_comunicaciones)
|
|
28
|
+
.with(message: {
|
|
29
|
+
auth_request: ta.merge(cuit_representada: 20_111_111_112),
|
|
30
|
+
filter: { estado: 1, fecha_desde: "2012-01-01", pagina: 2 }
|
|
31
|
+
})
|
|
32
|
+
.returns(fixture("ve_consumer/consultar_comunicaciones/success"))
|
|
33
|
+
ws.consultar_comunicaciones(estado: 1, fecha_desde: "2012-01-01", pagina: 2)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_consumir_comunicacion
|
|
37
|
+
savon.expects(:consumir_comunicacion)
|
|
38
|
+
.with(message: {
|
|
39
|
+
auth_request: ta.merge(cuit_representada: 20_111_111_112),
|
|
40
|
+
id_comunicacion: 12_061_068,
|
|
41
|
+
incluir_adjuntos: false
|
|
42
|
+
})
|
|
43
|
+
.returns(fixture("ve_consumer/consumir_comunicacion/success"))
|
|
44
|
+
r = ws.consumir_comunicacion(12_061_068)
|
|
45
|
+
assert_hash_includes r, id_comunicacion: "12061068", estado: "1"
|
|
46
|
+
assert_equal [], r[:adjuntos]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_consumir_comunicacion_con_adjuntos
|
|
50
|
+
boundary = "testboundary"
|
|
51
|
+
xml_part = fixture("ve_consumer/consumir_comunicacion/with_adjuntos")
|
|
52
|
+
binary = "PKbinarydata"
|
|
53
|
+
multipart_body = "--#{boundary}\r\nContent-Type: application/xop+xml; charset=UTF-8\r\n\r\n" \
|
|
54
|
+
"#{xml_part}\r\n" \
|
|
55
|
+
"--#{boundary}\r\nContent-Type: application/octet-stream\r\nContent-ID: <testcid@test>\r\n\r\n" \
|
|
56
|
+
"#{binary}\r\n" \
|
|
57
|
+
"--#{boundary}--\r\n"
|
|
58
|
+
savon.expects(:consumir_comunicacion)
|
|
59
|
+
.with(message: {
|
|
60
|
+
auth_request: ta.merge(cuit_representada: 20_111_111_112),
|
|
61
|
+
id_comunicacion: 12_061_068,
|
|
62
|
+
incluir_adjuntos: true
|
|
63
|
+
})
|
|
64
|
+
.returns(code: 200,
|
|
65
|
+
headers: { "Content-Type" => "multipart/related; boundary=\"#{boundary}\"" },
|
|
66
|
+
body: multipart_body)
|
|
67
|
+
r = ws.consumir_comunicacion(12_061_068, incluir_adjuntos: true)
|
|
68
|
+
assert_equal 1, r[:adjuntos].size
|
|
69
|
+
assert_equal "attach.zip", r[:adjuntos][0][:filename]
|
|
70
|
+
assert_equal binary, r[:adjuntos][0][:content]
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def test_soap_fault_levanta_response_error
|
|
74
|
+
savon.expects(:consultar_comunicaciones)
|
|
75
|
+
.with(message: :any)
|
|
76
|
+
.returns(fixture("ve_consumer/consultar_comunicaciones/soap_fault"))
|
|
77
|
+
error = assert_raises(ResponseError) { ws.consultar_comunicaciones }
|
|
78
|
+
assert error.code?(104)
|
|
79
|
+
assert_equal "104", error.errors[0][:code]
|
|
80
|
+
assert_equal "La Comunicación [1] no existe", error.errors[0][:msg]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def test_consultar_sistemas_publicadores
|
|
84
|
+
savon.expects(:consultar_sistemas_publicadores)
|
|
85
|
+
.with(message: { auth_request: ta.merge(cuit_representada: 20_111_111_112) })
|
|
86
|
+
.returns(fixture("ve_consumer/consultar_sistemas_publicadores/success"))
|
|
87
|
+
r = ws.consultar_sistemas_publicadores
|
|
88
|
+
assert_equal 1, r.size
|
|
89
|
+
assert_hash_includes r[0], id: "88", descripcion: "MDQ"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_consultar_sistemas_publicadores_con_id
|
|
93
|
+
savon.expects(:consultar_sistemas_publicadores)
|
|
94
|
+
.with(message: {
|
|
95
|
+
auth_request: ta.merge(cuit_representada: 20_111_111_112),
|
|
96
|
+
id_sistema_publicador: 88
|
|
97
|
+
})
|
|
98
|
+
.returns(fixture("ve_consumer/consultar_sistemas_publicadores/success"))
|
|
99
|
+
ws.consultar_sistemas_publicadores(id_sistema_publicador: 88)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def test_consultar_estados
|
|
103
|
+
savon.expects(:consultar_estados)
|
|
104
|
+
.with(message: { auth_request: ta.merge(cuit_representada: 20_111_111_112) })
|
|
105
|
+
.returns(fixture("ve_consumer/consultar_estados/success"))
|
|
106
|
+
r = ws.consultar_estados
|
|
107
|
+
assert_equal 2, r.size
|
|
108
|
+
assert_hash_includes r[0], id: "1", descripcion: "Comunicacion No Leida"
|
|
109
|
+
assert_equal "2", r[1][:id]
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def test_entorno_development
|
|
113
|
+
Client.expects(:new).with { |opts| opts[:wsdl] == WSAA::WSDL[:development] }.returns(stub(operations: []))
|
|
114
|
+
Client.expects(:new).with do |opts|
|
|
115
|
+
opts[:wsdl] == VEConsumer::WSDL[:development] && opts[:soap_version] == 2
|
|
116
|
+
end.returns(stub(operations: []))
|
|
117
|
+
VEConsumer.new(cuit: "1", env: :development)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def test_entorno_production
|
|
121
|
+
Client.expects(:new).with { |opts| opts[:wsdl] == WSAA::WSDL[:production] }.returns(stub(operations: []))
|
|
122
|
+
Client.expects(:new).with do |opts|
|
|
123
|
+
opts[:wsdl] == VEConsumer::WSDL[:production] && opts[:soap_version] == 2
|
|
124
|
+
end.returns(stub(operations: []))
|
|
125
|
+
VEConsumer.new(cuit: "1", env: :production)
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
|
|
3
|
+
<soap:Body>
|
|
4
|
+
<soap:Fault>
|
|
5
|
+
<soap:Code>
|
|
6
|
+
<soap:Value>soap:Receiver</soap:Value>
|
|
7
|
+
</soap:Code>
|
|
8
|
+
<soap:Reason>
|
|
9
|
+
<soap:Text xml:lang="en">Error 104: La Comunicación [1] no existe</soap:Text>
|
|
10
|
+
</soap:Reason>
|
|
11
|
+
</soap:Fault>
|
|
12
|
+
</soap:Body>
|
|
13
|
+
</soap:Envelope>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
|
|
3
|
+
<soap:Body>
|
|
4
|
+
<consultarComunicacionesResponse xmlns="http://ve.tecno.afip.gov.ar/domain/service/ws">
|
|
5
|
+
<RespuestaPaginada>
|
|
6
|
+
<pagina>1</pagina>
|
|
7
|
+
<totalPaginas>1</totalPaginas>
|
|
8
|
+
<itemsPorPagina>10</itemsPorPagina>
|
|
9
|
+
<totalItems>1</totalItems>
|
|
10
|
+
<items>
|
|
11
|
+
<ComunicacionSimplificada>
|
|
12
|
+
<idComunicacion>1</idComunicacion>
|
|
13
|
+
<cuitDestinatario>20111111112</cuitDestinatario>
|
|
14
|
+
<fechaPublicacion>2012-03-01 00:00:00</fechaPublicacion>
|
|
15
|
+
<fechaVencimiento>2012-03-01</fechaVencimiento>
|
|
16
|
+
<sistemaPublicador>19</sistemaPublicador>
|
|
17
|
+
<sistemaPublicadorDesc>Osiris</sistemaPublicadorDesc>
|
|
18
|
+
<estado>2</estado>
|
|
19
|
+
<estadoDesc>Comunicacion Leida</estadoDesc>
|
|
20
|
+
<asunto>Usted tiene un archivo adjunto</asunto>
|
|
21
|
+
<prioridad>3</prioridad>
|
|
22
|
+
<tieneAdjunto>true</tieneAdjunto>
|
|
23
|
+
</ComunicacionSimplificada>
|
|
24
|
+
</items>
|
|
25
|
+
</RespuestaPaginada>
|
|
26
|
+
</consultarComunicacionesResponse>
|
|
27
|
+
</soap:Body>
|
|
28
|
+
</soap:Envelope>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
|
|
3
|
+
<soap:Body>
|
|
4
|
+
<consultarEstadosResponse xmlns="http://ve.tecno.afip.gov.ar/domain/service/ws">
|
|
5
|
+
<Estados>
|
|
6
|
+
<Estado>
|
|
7
|
+
<id>1</id>
|
|
8
|
+
<descripcion>Comunicacion No Leida</descripcion>
|
|
9
|
+
</Estado>
|
|
10
|
+
<Estado>
|
|
11
|
+
<id>2</id>
|
|
12
|
+
<descripcion>Comunicacion Leida</descripcion>
|
|
13
|
+
</Estado>
|
|
14
|
+
</Estados>
|
|
15
|
+
</consultarEstadosResponse>
|
|
16
|
+
</soap:Body>
|
|
17
|
+
</soap:Envelope>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
|
|
3
|
+
<soap:Body>
|
|
4
|
+
<consultarSistemasPublicadoresResponse xmlns="http://ve.tecno.afip.gov.ar/domain/service/ws">
|
|
5
|
+
<Sistemas>
|
|
6
|
+
<Sistema>
|
|
7
|
+
<id>88</id>
|
|
8
|
+
<descripcion>MDQ</descripcion>
|
|
9
|
+
<certCN>mdqCN</certCN>
|
|
10
|
+
<subservicios/>
|
|
11
|
+
</Sistema>
|
|
12
|
+
</Sistemas>
|
|
13
|
+
</consultarSistemasPublicadoresResponse>
|
|
14
|
+
</soap:Body>
|
|
15
|
+
</soap:Envelope>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
|
|
3
|
+
<soap:Body>
|
|
4
|
+
<consumirComunicacionResponse xmlns="http://ve.tecno.afip.gov.ar/domain/service/ws">
|
|
5
|
+
<Comunicacion>
|
|
6
|
+
<idComunicacion>12061068</idComunicacion>
|
|
7
|
+
<cuitDestinatario>20111111112</cuitDestinatario>
|
|
8
|
+
<fechaPublicacion>2011-04-18 13:06:00</fechaPublicacion>
|
|
9
|
+
<sistemaPublicador>1</sistemaPublicador>
|
|
10
|
+
<sistemaPublicadorDesc>Sistema Ventanilla Electronica</sistemaPublicadorDesc>
|
|
11
|
+
<estado>1</estado>
|
|
12
|
+
<estadoDesc>Comunicacion No Leida</estadoDesc>
|
|
13
|
+
<asunto>Actualizacion de Certificado</asunto>
|
|
14
|
+
<prioridad>2</prioridad>
|
|
15
|
+
<adjuntos/>
|
|
16
|
+
</Comunicacion>
|
|
17
|
+
</consumirComunicacionResponse>
|
|
18
|
+
</soap:Body>
|
|
19
|
+
</soap:Envelope>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
|
|
3
|
+
<soap:Body>
|
|
4
|
+
<consumirComunicacionResponse xmlns="http://ve.tecno.afip.gov.ar/domain/service/ws">
|
|
5
|
+
<Comunicacion>
|
|
6
|
+
<idComunicacion>12061068</idComunicacion>
|
|
7
|
+
<cuitDestinatario>20111111112</cuitDestinatario>
|
|
8
|
+
<fechaPublicacion>2011-07-12 12:21:39</fechaPublicacion>
|
|
9
|
+
<fechaVencimiento>2011-07-12</fechaVencimiento>
|
|
10
|
+
<sistemaPublicador>88</sistemaPublicador>
|
|
11
|
+
<sistemaPublicadorDesc>MDQ</sistemaPublicadorDesc>
|
|
12
|
+
<estado>1</estado>
|
|
13
|
+
<estadoDesc>Comunicacion No Leida</estadoDesc>
|
|
14
|
+
<asunto>Mensaje generado por VeClient</asunto>
|
|
15
|
+
<prioridad>1</prioridad>
|
|
16
|
+
<adjuntos>
|
|
17
|
+
<adjunto>
|
|
18
|
+
<filename>attach.zip</filename>
|
|
19
|
+
<compressed>false</compressed>
|
|
20
|
+
<signed>false</signed>
|
|
21
|
+
<encrypted>false</encrypted>
|
|
22
|
+
<processed>false</processed>
|
|
23
|
+
<public>false</public>
|
|
24
|
+
<md5>2ea67624b8cc4340a2a6d4821627412d</md5>
|
|
25
|
+
<contentSize>453</contentSize>
|
|
26
|
+
<content>
|
|
27
|
+
<xop:Include href="cid:testcid@test" xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
|
|
28
|
+
</content>
|
|
29
|
+
</adjunto>
|
|
30
|
+
</adjuntos>
|
|
31
|
+
</Comunicacion>
|
|
32
|
+
</consumirComunicacionResponse>
|
|
33
|
+
</soap:Body>
|
|
34
|
+
</soap:Envelope>
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
|
3
|
+
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
|
|
4
|
+
xmlns:tns="http://ve.tecno.afip.gov.ar/domain/service/ws"
|
|
5
|
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
|
6
|
+
targetNamespace="http://ve.tecno.afip.gov.ar/domain/service/ws"
|
|
7
|
+
xmlns="http://schemas.xmlsoap.org/wsdl/">
|
|
8
|
+
<wsdl:types>
|
|
9
|
+
<xsd:schema targetNamespace="http://ve.tecno.afip.gov.ar/domain/service/ws">
|
|
10
|
+
<xsd:complexType name="AuthRequestType">
|
|
11
|
+
<xsd:sequence>
|
|
12
|
+
<xsd:element name="token" type="xsd:string"/>
|
|
13
|
+
<xsd:element name="sign" type="xsd:string"/>
|
|
14
|
+
<xsd:element name="cuitRepresentada" type="xsd:long"/>
|
|
15
|
+
</xsd:sequence>
|
|
16
|
+
</xsd:complexType>
|
|
17
|
+
<xsd:complexType name="FilterType">
|
|
18
|
+
<xsd:sequence>
|
|
19
|
+
<xsd:element name="estado" type="xsd:int" minOccurs="0"/>
|
|
20
|
+
<xsd:element name="fechaDesde" type="xsd:string" minOccurs="0"/>
|
|
21
|
+
<xsd:element name="fechaHasta" type="xsd:string" minOccurs="0"/>
|
|
22
|
+
<xsd:element name="comunicacionIdDesde" type="xsd:long" minOccurs="0"/>
|
|
23
|
+
<xsd:element name="comunicacionIdHasta" type="xsd:long" minOccurs="0"/>
|
|
24
|
+
<xsd:element name="tieneAdjunto" type="xsd:boolean" minOccurs="0"/>
|
|
25
|
+
<xsd:element name="sistemaPublicadorId" type="xsd:int" minOccurs="0"/>
|
|
26
|
+
<xsd:element name="pagina" type="xsd:int" minOccurs="0"/>
|
|
27
|
+
<xsd:element name="resultadosPorPagina" type="xsd:int" minOccurs="0"/>
|
|
28
|
+
<xsd:element name="referencia1" type="xsd:string" minOccurs="0"/>
|
|
29
|
+
<xsd:element name="referencia2" type="xsd:string" minOccurs="0"/>
|
|
30
|
+
</xsd:sequence>
|
|
31
|
+
</xsd:complexType>
|
|
32
|
+
<xsd:element name="consultarComunicaciones" type="tns:ConsultarComunicacionesType"/>
|
|
33
|
+
<xsd:complexType name="ConsultarComunicacionesType">
|
|
34
|
+
<xsd:sequence>
|
|
35
|
+
<xsd:element name="authRequest" type="tns:AuthRequestType"/>
|
|
36
|
+
<xsd:element name="filter" type="tns:FilterType" minOccurs="0"/>
|
|
37
|
+
</xsd:sequence>
|
|
38
|
+
</xsd:complexType>
|
|
39
|
+
<xsd:element name="consultarComunicacionesResponse" type="tns:ConsultarComunicacionesResponseType"/>
|
|
40
|
+
<xsd:complexType name="ConsultarComunicacionesResponseType">
|
|
41
|
+
<xsd:sequence>
|
|
42
|
+
<xsd:element name="RespuestaPaginada" type="tns:RespuestaPaginadaType"/>
|
|
43
|
+
</xsd:sequence>
|
|
44
|
+
</xsd:complexType>
|
|
45
|
+
<xsd:complexType name="RespuestaPaginadaType">
|
|
46
|
+
<xsd:sequence>
|
|
47
|
+
<xsd:element name="pagina" type="xsd:int"/>
|
|
48
|
+
<xsd:element name="totalPaginas" type="xsd:int"/>
|
|
49
|
+
<xsd:element name="itemsPorPagina" type="xsd:int"/>
|
|
50
|
+
<xsd:element name="totalItems" type="xsd:int"/>
|
|
51
|
+
<xsd:element name="items" type="tns:ItemsType" minOccurs="0"/>
|
|
52
|
+
</xsd:sequence>
|
|
53
|
+
</xsd:complexType>
|
|
54
|
+
<xsd:complexType name="ItemsType">
|
|
55
|
+
<xsd:sequence>
|
|
56
|
+
<xsd:element name="ComunicacionSimplificada" type="tns:ComunicacionSimplificadaType"
|
|
57
|
+
minOccurs="0" maxOccurs="unbounded"/>
|
|
58
|
+
</xsd:sequence>
|
|
59
|
+
</xsd:complexType>
|
|
60
|
+
<xsd:complexType name="ComunicacionSimplificadaType">
|
|
61
|
+
<xsd:sequence>
|
|
62
|
+
<xsd:element name="idComunicacion" type="xsd:long"/>
|
|
63
|
+
<xsd:element name="cuitDestinatario" type="xsd:long"/>
|
|
64
|
+
<xsd:element name="fechaPublicacion" type="xsd:string"/>
|
|
65
|
+
<xsd:element name="fechaVencimiento" type="xsd:string" minOccurs="0"/>
|
|
66
|
+
<xsd:element name="sistemaPublicador" type="xsd:int"/>
|
|
67
|
+
<xsd:element name="sistemaPublicadorDesc" type="xsd:string"/>
|
|
68
|
+
<xsd:element name="estado" type="xsd:int"/>
|
|
69
|
+
<xsd:element name="estadoDesc" type="xsd:string"/>
|
|
70
|
+
<xsd:element name="asunto" type="xsd:string"/>
|
|
71
|
+
<xsd:element name="prioridad" type="xsd:int"/>
|
|
72
|
+
<xsd:element name="tieneAdjunto" type="xsd:boolean"/>
|
|
73
|
+
</xsd:sequence>
|
|
74
|
+
</xsd:complexType>
|
|
75
|
+
<xsd:element name="consumirComunicacion" type="tns:ConsumirComunicacionType"/>
|
|
76
|
+
<xsd:complexType name="ConsumirComunicacionType">
|
|
77
|
+
<xsd:sequence>
|
|
78
|
+
<xsd:element name="authRequest" type="tns:AuthRequestType"/>
|
|
79
|
+
<xsd:element name="idComunicacion" type="xsd:long"/>
|
|
80
|
+
<xsd:element name="incluirAdjuntos" type="xsd:boolean"/>
|
|
81
|
+
</xsd:sequence>
|
|
82
|
+
</xsd:complexType>
|
|
83
|
+
<xsd:element name="consumirComunicacionResponse" type="tns:ConsumirComunicacionResponseType"/>
|
|
84
|
+
<xsd:complexType name="ConsumirComunicacionResponseType">
|
|
85
|
+
<xsd:sequence>
|
|
86
|
+
<xsd:element name="Comunicacion" type="tns:ComunicacionType"/>
|
|
87
|
+
</xsd:sequence>
|
|
88
|
+
</xsd:complexType>
|
|
89
|
+
<xsd:complexType name="ComunicacionType">
|
|
90
|
+
<xsd:sequence>
|
|
91
|
+
<xsd:element name="idComunicacion" type="xsd:long"/>
|
|
92
|
+
<xsd:element name="cuitDestinatario" type="xsd:long"/>
|
|
93
|
+
<xsd:element name="fechaPublicacion" type="xsd:string"/>
|
|
94
|
+
<xsd:element name="fechaVencimiento" type="xsd:string" minOccurs="0"/>
|
|
95
|
+
<xsd:element name="sistemaPublicador" type="xsd:int"/>
|
|
96
|
+
<xsd:element name="sistemaPublicadorDesc" type="xsd:string"/>
|
|
97
|
+
<xsd:element name="estado" type="xsd:int"/>
|
|
98
|
+
<xsd:element name="estadoDesc" type="xsd:string"/>
|
|
99
|
+
<xsd:element name="asunto" type="xsd:string"/>
|
|
100
|
+
<xsd:element name="prioridad" type="xsd:int"/>
|
|
101
|
+
<xsd:element name="tieneAdjunto" type="xsd:boolean" minOccurs="0"/>
|
|
102
|
+
<xsd:element name="mensaje" type="xsd:string" minOccurs="0"/>
|
|
103
|
+
<xsd:element name="adjuntos" type="tns:AdjuntosType" minOccurs="0"/>
|
|
104
|
+
</xsd:sequence>
|
|
105
|
+
</xsd:complexType>
|
|
106
|
+
<xsd:complexType name="AdjuntosType">
|
|
107
|
+
<xsd:sequence>
|
|
108
|
+
<xsd:element name="adjunto" type="tns:AdjuntoType" minOccurs="0" maxOccurs="unbounded"/>
|
|
109
|
+
</xsd:sequence>
|
|
110
|
+
</xsd:complexType>
|
|
111
|
+
<xsd:complexType name="AdjuntoType">
|
|
112
|
+
<xsd:sequence>
|
|
113
|
+
<xsd:element name="filename" type="xsd:string"/>
|
|
114
|
+
<xsd:element name="compressed" type="xsd:boolean"/>
|
|
115
|
+
<xsd:element name="signed" type="xsd:boolean"/>
|
|
116
|
+
<xsd:element name="encrypted" type="xsd:boolean"/>
|
|
117
|
+
<xsd:element name="processed" type="xsd:boolean"/>
|
|
118
|
+
<xsd:element name="public" type="xsd:boolean"/>
|
|
119
|
+
<xsd:element name="md5" type="xsd:string" minOccurs="0"/>
|
|
120
|
+
<xsd:element name="contentSize" type="xsd:long"/>
|
|
121
|
+
<xsd:element name="content" type="xsd:base64Binary"/>
|
|
122
|
+
</xsd:sequence>
|
|
123
|
+
</xsd:complexType>
|
|
124
|
+
<xsd:element name="consultarSistemasPublicadores" type="tns:ConsultarSistemasPublicadoresType"/>
|
|
125
|
+
<xsd:complexType name="ConsultarSistemasPublicadoresType">
|
|
126
|
+
<xsd:sequence>
|
|
127
|
+
<xsd:element name="authRequest" type="tns:AuthRequestType"/>
|
|
128
|
+
<xsd:element name="idSistemaPublicador" type="xsd:long" minOccurs="0"/>
|
|
129
|
+
</xsd:sequence>
|
|
130
|
+
</xsd:complexType>
|
|
131
|
+
<xsd:element name="consultarSistemasPublicadoresResponse" type="tns:ConsultarSistemasPublicadoresResponseType"/>
|
|
132
|
+
<xsd:complexType name="ConsultarSistemasPublicadoresResponseType">
|
|
133
|
+
<xsd:sequence>
|
|
134
|
+
<xsd:element name="Sistemas" type="tns:SistemasType"/>
|
|
135
|
+
</xsd:sequence>
|
|
136
|
+
</xsd:complexType>
|
|
137
|
+
<xsd:complexType name="SistemasType">
|
|
138
|
+
<xsd:sequence>
|
|
139
|
+
<xsd:element name="Sistema" type="tns:SistemaType" minOccurs="0" maxOccurs="unbounded"/>
|
|
140
|
+
</xsd:sequence>
|
|
141
|
+
</xsd:complexType>
|
|
142
|
+
<xsd:complexType name="SistemaType">
|
|
143
|
+
<xsd:sequence>
|
|
144
|
+
<xsd:element name="id" type="xsd:int"/>
|
|
145
|
+
<xsd:element name="descripcion" type="xsd:string"/>
|
|
146
|
+
<xsd:element name="certCN" type="xsd:string" minOccurs="0"/>
|
|
147
|
+
<xsd:element name="subservicios" type="tns:SubserviciosType" minOccurs="0"/>
|
|
148
|
+
</xsd:sequence>
|
|
149
|
+
</xsd:complexType>
|
|
150
|
+
<xsd:complexType name="SubserviciosType">
|
|
151
|
+
<xsd:sequence>
|
|
152
|
+
<xsd:element name="Subservicio" type="tns:SubservicioType" minOccurs="0" maxOccurs="unbounded"/>
|
|
153
|
+
</xsd:sequence>
|
|
154
|
+
</xsd:complexType>
|
|
155
|
+
<xsd:complexType name="SubservicioType">
|
|
156
|
+
<xsd:sequence>
|
|
157
|
+
<xsd:element name="nombre" type="xsd:string"/>
|
|
158
|
+
<xsd:element name="descripcion" type="xsd:string"/>
|
|
159
|
+
</xsd:sequence>
|
|
160
|
+
</xsd:complexType>
|
|
161
|
+
<xsd:element name="consultarEstados" type="tns:ConsultarEstadosType"/>
|
|
162
|
+
<xsd:complexType name="ConsultarEstadosType">
|
|
163
|
+
<xsd:sequence>
|
|
164
|
+
<xsd:element name="authRequest" type="tns:AuthRequestType"/>
|
|
165
|
+
</xsd:sequence>
|
|
166
|
+
</xsd:complexType>
|
|
167
|
+
<xsd:element name="consultarEstadosResponse" type="tns:ConsultarEstadosResponseType"/>
|
|
168
|
+
<xsd:complexType name="ConsultarEstadosResponseType">
|
|
169
|
+
<xsd:sequence>
|
|
170
|
+
<xsd:element name="Estados" type="tns:EstadosType"/>
|
|
171
|
+
</xsd:sequence>
|
|
172
|
+
</xsd:complexType>
|
|
173
|
+
<xsd:complexType name="EstadosType">
|
|
174
|
+
<xsd:sequence>
|
|
175
|
+
<xsd:element name="Estado" type="tns:EstadoType" minOccurs="0" maxOccurs="unbounded"/>
|
|
176
|
+
</xsd:sequence>
|
|
177
|
+
</xsd:complexType>
|
|
178
|
+
<xsd:complexType name="EstadoType">
|
|
179
|
+
<xsd:sequence>
|
|
180
|
+
<xsd:element name="id" type="xsd:int"/>
|
|
181
|
+
<xsd:element name="descripcion" type="xsd:string"/>
|
|
182
|
+
</xsd:sequence>
|
|
183
|
+
</xsd:complexType>
|
|
184
|
+
</xsd:schema>
|
|
185
|
+
</wsdl:types>
|
|
186
|
+
<wsdl:message name="consultarComunicacionesIn">
|
|
187
|
+
<wsdl:part name="parameters" element="tns:consultarComunicaciones"/>
|
|
188
|
+
</wsdl:message>
|
|
189
|
+
<wsdl:message name="consultarComunicacionesOut">
|
|
190
|
+
<wsdl:part name="parameters" element="tns:consultarComunicacionesResponse"/>
|
|
191
|
+
</wsdl:message>
|
|
192
|
+
<wsdl:message name="consumirComunicacionIn">
|
|
193
|
+
<wsdl:part name="parameters" element="tns:consumirComunicacion"/>
|
|
194
|
+
</wsdl:message>
|
|
195
|
+
<wsdl:message name="consumirComunicacionOut">
|
|
196
|
+
<wsdl:part name="parameters" element="tns:consumirComunicacionResponse"/>
|
|
197
|
+
</wsdl:message>
|
|
198
|
+
<wsdl:message name="consultarSistemasPublicadoresIn">
|
|
199
|
+
<wsdl:part name="parameters" element="tns:consultarSistemasPublicadores"/>
|
|
200
|
+
</wsdl:message>
|
|
201
|
+
<wsdl:message name="consultarSistemasPublicadoresOut">
|
|
202
|
+
<wsdl:part name="parameters" element="tns:consultarSistemasPublicadoresResponse"/>
|
|
203
|
+
</wsdl:message>
|
|
204
|
+
<wsdl:message name="consultarEstadosIn">
|
|
205
|
+
<wsdl:part name="parameters" element="tns:consultarEstados"/>
|
|
206
|
+
</wsdl:message>
|
|
207
|
+
<wsdl:message name="consultarEstadosOut">
|
|
208
|
+
<wsdl:part name="parameters" element="tns:consultarEstadosResponse"/>
|
|
209
|
+
</wsdl:message>
|
|
210
|
+
<wsdl:portType name="VEConsumerPort">
|
|
211
|
+
<wsdl:operation name="consultarComunicaciones">
|
|
212
|
+
<wsdl:input message="tns:consultarComunicacionesIn"/>
|
|
213
|
+
<wsdl:output message="tns:consultarComunicacionesOut"/>
|
|
214
|
+
</wsdl:operation>
|
|
215
|
+
<wsdl:operation name="consumirComunicacion">
|
|
216
|
+
<wsdl:input message="tns:consumirComunicacionIn"/>
|
|
217
|
+
<wsdl:output message="tns:consumirComunicacionOut"/>
|
|
218
|
+
</wsdl:operation>
|
|
219
|
+
<wsdl:operation name="consultarSistemasPublicadores">
|
|
220
|
+
<wsdl:input message="tns:consultarSistemasPublicadoresIn"/>
|
|
221
|
+
<wsdl:output message="tns:consultarSistemasPublicadoresOut"/>
|
|
222
|
+
</wsdl:operation>
|
|
223
|
+
<wsdl:operation name="consultarEstados">
|
|
224
|
+
<wsdl:input message="tns:consultarEstadosIn"/>
|
|
225
|
+
<wsdl:output message="tns:consultarEstadosOut"/>
|
|
226
|
+
</wsdl:operation>
|
|
227
|
+
</wsdl:portType>
|
|
228
|
+
<wsdl:binding name="VEConsumerBinding" type="tns:VEConsumerPort">
|
|
229
|
+
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
|
|
230
|
+
<wsdl:operation name="consultarComunicaciones">
|
|
231
|
+
<soap12:operation soapAction="consultarComunicaciones" style="document"/>
|
|
232
|
+
<wsdl:input><soap12:body use="literal"/></wsdl:input>
|
|
233
|
+
<wsdl:output><soap12:body use="literal"/></wsdl:output>
|
|
234
|
+
</wsdl:operation>
|
|
235
|
+
<wsdl:operation name="consumirComunicacion">
|
|
236
|
+
<soap12:operation soapAction="consumirComunicacion" style="document"/>
|
|
237
|
+
<wsdl:input><soap12:body use="literal"/></wsdl:input>
|
|
238
|
+
<wsdl:output><soap12:body use="literal"/></wsdl:output>
|
|
239
|
+
</wsdl:operation>
|
|
240
|
+
<wsdl:operation name="consultarSistemasPublicadores">
|
|
241
|
+
<soap12:operation soapAction="consultarSistemasPublicadores" style="document"/>
|
|
242
|
+
<wsdl:input><soap12:body use="literal"/></wsdl:input>
|
|
243
|
+
<wsdl:output><soap12:body use="literal"/></wsdl:output>
|
|
244
|
+
</wsdl:operation>
|
|
245
|
+
<wsdl:operation name="consultarEstados">
|
|
246
|
+
<soap12:operation soapAction="consultarEstados" style="document"/>
|
|
247
|
+
<wsdl:input><soap12:body use="literal"/></wsdl:input>
|
|
248
|
+
<wsdl:output><soap12:body use="literal"/></wsdl:output>
|
|
249
|
+
</wsdl:operation>
|
|
250
|
+
</wsdl:binding>
|
|
251
|
+
<wsdl:service name="VEConsumer">
|
|
252
|
+
<wsdl:port name="VEConsumerPort" binding="tns:VEConsumerBinding">
|
|
253
|
+
<soap12:address location="https://stable-middleware-tecno-ext.afip.gob.ar/ve-ws/services/veconsumer"/>
|
|
254
|
+
</wsdl:port>
|
|
255
|
+
</wsdl:service>
|
|
256
|
+
</wsdl:definitions>
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: arca.rb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Arca Kit
|
|
@@ -154,10 +154,10 @@ email:
|
|
|
154
154
|
- hola@arcakit.dev
|
|
155
155
|
executables:
|
|
156
156
|
- console
|
|
157
|
+
- devcontainer
|
|
157
158
|
extensions: []
|
|
158
159
|
extra_rdoc_files: []
|
|
159
160
|
files:
|
|
160
|
-
- ".devcontainer/Dockerfile"
|
|
161
161
|
- ".devcontainer/devcontainer.json"
|
|
162
162
|
- ".github/dependabot.yml"
|
|
163
163
|
- ".github/workflows/ci.yml"
|
|
@@ -176,6 +176,7 @@ files:
|
|
|
176
176
|
- SECURITY.md
|
|
177
177
|
- arca.gemspec
|
|
178
178
|
- bin/console
|
|
179
|
+
- bin/devcontainer
|
|
179
180
|
- lib/arca.rb
|
|
180
181
|
- lib/arca/client.rb
|
|
181
182
|
- lib/arca/core_ext/hash.rb
|
|
@@ -187,6 +188,7 @@ files:
|
|
|
187
188
|
- lib/arca/persona_service_a4.rb
|
|
188
189
|
- lib/arca/persona_service_a5.rb
|
|
189
190
|
- lib/arca/type_conversions.rb
|
|
191
|
+
- lib/arca/ve_consumer.rb
|
|
190
192
|
- lib/arca/version.rb
|
|
191
193
|
- lib/arca/w_cons_declaracion.rb
|
|
192
194
|
- lib/arca/ws_constancia_inscripcion.rb
|
|
@@ -203,6 +205,7 @@ files:
|
|
|
203
205
|
- test/arca/test.crt
|
|
204
206
|
- test/arca/test.key
|
|
205
207
|
- test/arca/type_conversions_test.rb
|
|
208
|
+
- test/arca/ve_consumer_test.rb
|
|
206
209
|
- test/arca/w_cons_declaracion_test.rb
|
|
207
210
|
- test/arca/ws_constancia_inscripcion_test.rb
|
|
208
211
|
- test/arca/wsaa_test.rb
|
|
@@ -210,6 +213,13 @@ files:
|
|
|
210
213
|
- test/arca/wsfe_test.rb
|
|
211
214
|
- test/arca/wsfecred_test.rb
|
|
212
215
|
- test/arca/wsrgiva_test.rb
|
|
216
|
+
- test/fixtures/ve_consumer/consultar_comunicaciones/soap_fault.xml
|
|
217
|
+
- test/fixtures/ve_consumer/consultar_comunicaciones/success.xml
|
|
218
|
+
- test/fixtures/ve_consumer/consultar_estados/success.xml
|
|
219
|
+
- test/fixtures/ve_consumer/consultar_sistemas_publicadores/success.xml
|
|
220
|
+
- test/fixtures/ve_consumer/consumir_comunicacion/success.xml
|
|
221
|
+
- test/fixtures/ve_consumer/consumir_comunicacion/with_adjuntos.xml
|
|
222
|
+
- test/fixtures/ve_consumer/ve_consumer.wsdl
|
|
213
223
|
- test/fixtures/wconsdeclaracion/detallada_estado/success.xml
|
|
214
224
|
- test/fixtures/wconsdeclaracion/detallada_lista_declaraciones/por_fecha_success.xml
|
|
215
225
|
- test/fixtures/wconsdeclaracion/detallada_lista_declaraciones/por_id_inexistente.xml
|
|
@@ -312,7 +322,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
312
322
|
- !ruby/object:Gem::Version
|
|
313
323
|
version: '0'
|
|
314
324
|
requirements: []
|
|
315
|
-
rubygems_version:
|
|
325
|
+
rubygems_version: 4.0.3
|
|
316
326
|
specification_version: 4
|
|
317
327
|
summary: 'Cliente Ruby para webservices de AFIP/ARCA: facturación electrónica, comprobantes
|
|
318
328
|
y servicios tributarios de Argentina'
|