class Timbradocfdi::Generator

Constants

BASE_URI

Attributes

client[RW]

Attributo accesible (lectura y escritura)

user[RW]

Attributo accesible (lectura y escritura)

Public Class Methods

new(user) click to toggle source

Se inicializa la clase con un usuario y su respectivo cliente con el soap

# File lib/timbradocfdi.rb, line 20
def initialize(user)
  @client = Savon.client(wsdl: BASE_URI)
  @user = user
end

Public Instance Methods

cancelaCFDI(rfcEmisor, folioUUID) click to toggle source

Cancela CFDI

# File lib/timbradocfdi/cancel.rb, line 7
def cancelaCFDI(rfcEmisor, folioUUID)
  
  options = {
    :usuarioIntegrador =>   @user,
    :rfcEmisor         =>   rfcEmisor,
    :folioUUID         =>   folioUUID,
  }

  response = request("cancela_cfdi", options)
  parse_result_cancelaCFDI response.body
end
file_reader(path) click to toggle source

Read certificate and encode to base64

# File lib/timbradocfdi.rb, line 28
def file_reader(path)
  raw = File.read(path)
  Base64.encode64(raw)
end
obtieneCFDI(rfcEmisor, folioUUID) click to toggle source

Registro emisor

# File lib/timbradocfdi/obtain.rb, line 7
def obtieneCFDI(rfcEmisor, folioUUID)
  
  options = {
    :usuarioIntegrador =>   @user,
    :rfcEmisor         =>   rfcEmisor,
    :folioUUID         =>   folioUUID,
  }

  response = request("obtiene_cfdi", options)
  parse_result_obtieneCFDI response.body
end
parse_result_cancelaCFDI(result) click to toggle source

Parse result for cancelaCFDI

# File lib/timbradocfdi/results.rb, line 63
def parse_result_cancelaCFDI(result)
  object = result.to_hash 
  result_object = object[:cancela_cfdi_response][:cancela_cfdi_result][:any_type]

  {
    code: result_object[1],
    message: (result_object[2].to_s).encode("utf-8")
  }
end
parse_result_obtieneCFDI(result) click to toggle source

Parse result for obtieneCFDI

# File lib/timbradocfdi/results.rb, line 42
def parse_result_obtieneCFDI(result)
  object = result.to_hash
  result_object = object[:obtiene_cfdi_response][:obtiene_cfdi_result][:any_type]

  if result_object[1].to_i === 0 
    return_object = {
      code: 0,
      xml: result_object[3],
      qr: result_object[4],
      details: result_object[5]
    }
  else
    return_object = {
      code: result_object[1],
      message: result_object[2]
    }
  end
end
parse_result_registro_emisor(result) click to toggle source

Parse result for registro emisor

# File lib/timbradocfdi/results.rb, line 7
def parse_result_registro_emisor(result)
  object        = result.to_hash
  result_object = object[:registra_emisor_response][:registra_emisor_result][:any_type]

  {
    code: result_object[1],
    message: (result_object[2].to_s).encode("utf-8")
  }
end
parse_result_timbraCFDI(result) click to toggle source

Parse result for timbraCFDI

# File lib/timbradocfdi/results.rb, line 19
def parse_result_timbraCFDI(result)
  object = result.to_hash
  result_object = object[:timbra_cfdi_response][:timbra_cfdi_result][:any_type]

  if result_object[1].to_i === 0 
    return_object = {
      code: 0,
      xml: result_object[3],
      qr: result_object[4],
      details: result_object[5]
    }
  else
    return_object = {
      code: result_object[1],
      message: result_object[2]
    }
  end

  return_object
end
registroEmisor(rfcEmisor, base64Cer, base64Key, contrasena) click to toggle source

Registro emisor

# File lib/timbradocfdi/register_emisor.rb, line 7
def registroEmisor(rfcEmisor, base64Cer, base64Key, contrasena)
  
  options = {
    :usuarioIntegrador =>   @user,
    :rfcEmisor         =>   rfcEmisor,
    :base64Cer         =>   file_reader(base64Cer),
    :base64Key         =>   file_reader(base64Key),
    :contrasena        =>   contrasena
  }

  response = request("registra_emisor", options)
  parse_result_registro_emisor response.body
end
request(function, options = {}) click to toggle source

Method for generate HTTP Request post

# File lib/timbradocfdi.rb, line 35
def request(function, options = {})
  operation = function.intern
  @client.call(operation, message: options)
end
timbraCFDI(xmlComprobante, idComprobante) click to toggle source

TimbraCFDI

# File lib/timbradocfdi/stamping.rb, line 7
def timbraCFDI(xmlComprobante, idComprobante)

  options = {
    :usuarioIntegrador    =>   @user,
    :xmlComprobanteBase64 =>   file_reader(xmlComprobante),
    :idComprobante        =>   idComprobante,
  }

  response = request("timbra_cfdi", options)
  parse_result_timbraCFDI response.body
end