class Afip::CTG

Attributes

base_imp[R]
body[RW]
client[R]
cod_especie[RW]
cosecha[RW]
cp_num[RW]
ctg_num[RW]
cuit_canjeador[RW]
cuit_corredor[RW]
cuit_destinatario[RW]
cuit_destino[RW]
cuit_transportista[RW]
horas[RW]
km[RW]
localidad_destino[RW]
localidad_origen[RW]
patente[RW]
peso[RW]
rccc[RW]
remitente_com[RW]
total[R]

Public Class Methods

new(attrs = {}) click to toggle source
# File lib/Afip/ctg.rb, line 7
def initialize(attrs = {})
  Afip::AuthData.fetch("wsctg")
  @client         = Savon.client(
    ssl_cert_key_file: Afip.pkey,
    ssl_cert_file: Afip.cert,
    env_namespace: :soapenv,
    namespace_identifier: :ctg,
    log: true,
    logger: Rails.logger,
    log_level: :debug,
    pretty_print_xml: true,
    encoding: 'UTF-8',
    ssl_version: :TLSv1,
    wsdl:  Afip.service_url
  )

  @ctg_num                = attrs[:ctg_num]
  @cp_num                 = attrs[:cp_num]
  @cod_especie            = attrs[:cod_especie]
  @cuit_canjeador         = attrs[:cuit_canjeador]
  @rccc                   = attrs[:rccc]
  @cuit_destino           = attrs[:cuit_destino]
  @cuit_destinatario      = attrs[:cuit_destinatario]
  @localidad_origen       = attrs[:localidad_origen]
  @localidad_destino      = attrs[:localidad_destino]
  @cosecha                = attrs[:cosecha]
  @peso                   = attrs[:peso]
  @cuit_transportista     = attrs[:cuit_transportista]
  @horas                  = attrs[:horas]
  @patente                = attrs[:patente]
  @km                     = attrs[:km]
  @cuit_corredor          = attrs[:cuit_corredor]
  @remitente_com          = attrs[:remitente_com]
  @cuit_chofer            = attrs[:cuit_chofer]
  @cant_kilos_carta_porte = attrs[:cant_kilos_carta_porte]
  @establecimiento        = attrs[:establecimiento]
  @cuit_solicitante       = attrs[:cuit_solicitante]
  @fecha_desde            = attrs[:fecha_desde]
  @fecha_hasta            = attrs[:fecha_hasta]

  @body               = {"request" =>{"auth" => Afip.auth_hash("wsctg")}}
end

Public Instance Methods

anular_ctg() click to toggle source
# File lib/Afip/ctg.rb, line 91
def anular_ctg
  request = {
              "datosAnularCTG" =>{
                "cartaPorte"  => @cp_num,
                "ctg"         => @ctg_num
              }
            }
  body["request"].merge(request)

  response = client.call(:anular_ctg, message: body)
end
authorized?() click to toggle source
# File lib/Afip/ctg.rb, line 87
def authorized?
    !response.nil?
end
cambiar_destino_detinatario_ctg_rechazado() click to toggle source
# File lib/Afip/ctg.rb, line 103
def cambiar_destino_detinatario_ctg_rechazado
  request = {
              "datosCambiarDestinoDestinatarioCTGRechazado" =>{
                "cartaPorte"                  => @cp_num,
                "ctg"                         => @ctg_num,
                "codigoLocalidadDestino"      => @destino,
                "codigoLocalidadDestinatario" => @destinatario,
                "kmARecorrer"                 => @km
              }
            }
  body["request"].merge(request)

  response = client.call(:cambiar_destino_detinatario_ctg_rechazado, message: body)
end
confirmar_arribo() click to toggle source
# File lib/Afip/ctg.rb, line 118
def confirmar_arribo
  request = {
              "datosConfirmarArribo" =>{
                "cartaPorte"          => @cp_num,
                "ctg"                 => @ctg_num,
                "cuitTransportista"   => @cuit_transportista,
                "cuitChofer"          => @cuit_chofer,
                "cantKilosCartaPorte" => @cant_kilos_carta_porte
              }
            }
  body["request"].merge(request)

  response = client.call(:confirmar_arribo, message: body)
end
confirmar_definitivo() click to toggle source
# File lib/Afip/ctg.rb, line 133
def confirmar_definitivo
  request = {
              "datosConfirmarDefinitivo" =>{
                "cartaPorte"          => @cp_num,
                "ctg"                 => @ctg_num,
                "establecimiento"     => @establecimiento,
                "codigoCosecha"       => @cosecha,
                "pesoNeto"            => @peso
              }
            }
  body["request"].merge(request)

  response = client.call(:confirmar_definitivo, message: body)
end
consultar_constancia_ctg_pdf() click to toggle source
# File lib/Afip/ctg.rb, line 153
def consultar_constancia_ctg_pdf
  request = {
              "ctg" => @ctg_num
            }

  body["request"].merge(request)

  pp response = client.call(:consultar_constancia_ctgpdf, message: body)
end
consultar_cosechas() click to toggle source
# File lib/Afip/ctg.rb, line 148
def consultar_cosechas
  response = client.call(:obtener_cosechas, message: body)
  return response["arrayCosechas"]
end
consultar_ctg() click to toggle source
# File lib/Afip/ctg.rb, line 163
def consultar_ctg
  request = {
              "consultarCTGDatos" =>{
                "cartaPorte"          => @cp_num,
                "ctg"                 => @ctg_num,
                "patente"             => @patente,
                "cuitSolicitante"     => @cuit_solicitante,
                "cuitDestino"         => @destino,
                "fechaEmisionDesde"   => @fecha_desde,
                "fechaEmisionHsta"    => @fecha_hasta,
                "cuitCorredor"        => @cuit_corredor
              }
            }
  body["request"].merge(request)

  response = client.call(:consultar_ctg, message: body)
end
consultar_ctg_rechazados() click to toggle source
# File lib/Afip/ctg.rb, line 181
def consultar_ctg_rechazados
  response = client.call(:consultar_ctg_rechazados, message: body)
  return response.to_hash["response"]["arrayConsultarCTGRechazados"]
end
consultar_detalle_ctg() click to toggle source
# File lib/Afip/ctg.rb, line 186
def consultar_detalle_ctg
  request = {
              "ctg" => @ctg_num
            }

  body["request"].merge(request)

  response = client.call(:consultar_constancia_ctg_pdf, message: body)
  return response.to_hash["response"]["consultarDetalleCTGDatos"]
end
consultar_especies() click to toggle source
# File lib/Afip/ctg.rb, line 197
def consultar_especies
  response = client.call(:consultar_especies, message: body)
  response.body[:consultar_especies_response][:response][:array_especies][:especie].map{|c| [c[:codigo],c[:descripcion]]}
end
consultar_establecimientos() click to toggle source
# File lib/Afip/ctg.rb, line 202
def consultar_establecimientos
  response = client.call(:consultar_establecimientos, message: body)
  response.body[:consultar_especies_response][:response][:array_establecimientos][:establecimiento].map{|c| [c]}
end
consultar_localidades(city) click to toggle source
# File lib/Afip/ctg.rb, line 217
def consultar_localidades(city)
  body["request"]["codigoProvincia"] = city
  response = client.call(:consultar_localidades_por_provincia, message: body)
  if response.body[:consultar_localidades_por_provincia_response][:response][:array_localidades][:localidad].class.name != "Array"
    [response.body[:consultar_localidades_por_provincia_response][:response][:array_localidades][:localidad]].map{|c| [c[:codigo],c[:descripcion]]}
  else
    response.body[:consultar_localidades_por_provincia_response][:response][:array_localidades][:localidad].map{|c| [c[:codigo],c[:descripcion]]}
  end
end
consultar_provincias() click to toggle source
# File lib/Afip/ctg.rb, line 207
def consultar_provincias
  response = client.call(:consultar_provincias, message: body)
  response.body[:consultar_provincias_response][:consultar_provincias_response][:array_provincias][:provincia].map{|c| [c[:codigo],c[:descripcion]]}
end
setup_ctg() click to toggle source
# File lib/Afip/ctg.rb, line 60
def setup_ctg

  datos = {
              "datosSolicitarCTGInicial" =>{
                  "cartaPorte"                        => @cp_num, #long
                  "codigoEspecie"                     => @cod_especie, #int
                  #"cuitCanjeador"                     => @cuit_canjeador.to_i, #long
                  #"remitenteComercialComoCanjeador"   => @rccc,
                  "cuitDestino"                       => @cuit_destino, #long
                  "cuitDestinatario"                  => @cuit_destinatario, #long
                  "codigoLocalidadOrigen"             => @localidad_origen, #int
                  "codigoLocalidadDestino"            => @localidad_destino, #int
                  "codigoCosecha"                     => @cosecha, #string
                  "pesoNeto"                          => @peso.to_i, #long
                  #"cuitTransportista"                 => @cuit_transportista.to_i, #long
                  #"cantHoras"                         => @horas, #int
                  #"patente"                           => @patente, #string
                  "kmARecorrer"                       => @km, #unsignedint
                  #"cuitCorredor"                      => @cuit_corredor.to_i, #long
                  #"remitenteComercialcomoProductor"   => @remitente_com
                }
            }

  @body["request"].merge!(datos)
  return @body
end
solicitar_ctg_inicial() click to toggle source
# File lib/Afip/ctg.rb, line 50
def solicitar_ctg_inicial
  pp body = setup_ctg

  pp response = client.call(:solicitar_ctg_inicial,message: body)

  setup_response(response.to_hash)

  self.authorized?
end

Private Instance Methods

setup_response(response) click to toggle source
# File lib/Afip/ctg.rb, line 229
def setup_response(response)
  # TODO: turn this into an all-purpose Response class
  pp response
end