Class: Arca::WSRGIVA

Inherits:
Object
  • Object
show all
Defined in:
lib/arca/wsrgiva.rb

Constant Summary collapse

WSDL =
{
  development: "https://fwshomo.afip.gov.ar/wsrgiva/services/RegimenPercepcionIVAService?wsdl",
  production: "https://serviciosjava.afip.gov.ar/wsrgiva/services/RegimenPercepcionIVAService?wdsl",
  test: "#{Root}/test/fixtures/wsrgiva/wsrgiva.wsdl"
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ WSRGIVA

Returns a new instance of WSRGIVA.



16
17
18
19
20
21
22
23
# File 'lib/arca/wsrgiva.rb', line 16

def initialize(options = {})
  @cuit = normalize_cuit(options[:cuit])
  @wsaa = WSAA.new options.merge(service: "wsrgiva")
  @client = Client.new Hash(options[:savon]).reverse_merge(
    wsdl: WSDL[@wsaa.env],
    soap_version: 1
  )
end

Instance Attribute Details

#cuitObject (readonly)

Returns the value of attribute cuit.



14
15
16
# File 'lib/arca/wsrgiva.rb', line 14

def cuit
  @cuit
end

#wsaaObject (readonly)

Returns the value of attribute wsaa.



14
15
16
# File 'lib/arca/wsrgiva.rb', line 14

def wsaa
  @wsaa
end

Instance Method Details

#consultar_constancia_por_lote(cuits, tipo_bienes_involucrados: 1) ⇒ Object

Consulta la situación fiscal de hasta 100 contribuyentes. cuits: array of 11-digit CUIT strings/integers (max 100). tipo_bienes_involucrados: 1 (único valor admitido; nuevo/usado). Returns array of constancia hashes (one per CUIT): success with fecha_consulta, id_contribuyente, descripcion_contribuyente, vigencia, codigo_leyenda, descripcion_leyenda, codigo_seguridad; or error with codigo_error, descripcion_error.

Raises:

  • (ArgumentError)


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/arca/wsrgiva.rb', line 41

def consultar_constancia_por_lote(cuits, tipo_bienes_involucrados: 1)
  cuits = Array(cuits).map { |c| c.to_s.gsub(/\D/, "") }
  raise ArgumentError, "Maximum 100 CUITs per request" if cuits.size > 100
  raise ArgumentError, "tipo_bienes_involucrados must be 1" if tipo_bienes_involucrados != 1

  datos_transaccion = cuits.map do |cuit|
    { cuit_contribuyente: cuit.to_i, tipo_bienes_involucrados: 1 }
  end
  message = {
    auth_request: @wsaa.auth.merge(cuit_representada: cuit),
    datos_transaccion_array: { datos_transaccion: datos_transaccion }
  }
  result = request(:consultar_constancia_por_lote_v2, message)[:return]
  constancias = result[:constancia]
  Array.wrap(constancias)
end

#dummyObject



25
26
27
28
29
30
31
32
# File 'lib/arca/wsrgiva.rb', line 25

def dummy
  r = request(:dummy)[:return]
  {
    app_server: r[:appserver] || r[:app_server],
    auth_server: r[:authserver] || r[:auth_server],
    db_server: r[:dbserver] || r[:db_server]
  }
end