class ReceitawsClient::Cnpj

Attributes

abertura[R]
atividades[R]
bairro[R]
cep[R]
cnaes[R]
cnpj[R]
complemento[R]
data_situacao[R]
email[R]
fantasia[R]
logradouro[R]
message[R]
municipio[R]
nome[R]
numero[R]
situacao[R]
status[R]
telefone[R]
uf[R]

Public Class Methods

new(result = nil) click to toggle source
# File lib/receitaws_client/cnpj.rb, line 8
def initialize(result = nil)
  if result.nil?
    @status = :error
    @message = 'Timeout'
    return self
  end

  if result['status'] == 'ERROR'
    @status = :error
    @message = result['message']
    return self
  end

  @status = :ok
  @nome = result['nome']
  @uf = result['uf']
  @telefone = result['telefone']
  @email = result['email']
  @fantasia = result['fantasia']
  @cnpj = result['cnpj']
  @bairro = result['bairro']
  @logradouro = result['logradouro']
  @numero = result['numero']
  @cep = result['cep']
  @municipio = result['municipio']
  @data_de_criacao = result['abertura']
  @data_situacao = result['data_situacao']
  @situacao = result['situacao']
  @complemento = result['complemento']
  @atividades = []
  result['atividade_principal'].each do |atividade|
    @atividades << { code: atividade['code'], text: atividade['text'] }
  end
  result['atividades_secundarias'].each do |atividade|
    @atividades << { code: atividade['code'], text: atividade['text'] }
  end
  @cnaes = @atividades.collect { |a| a[:code].to_s.gsub(/[^0-9A-Za-z]/, '') }

  self
end
valida_digito_cnpj(cnpj) click to toggle source
# File lib/receitaws_client/cnpj.rb, line 49
def self.valida_digito_cnpj(cnpj)
    return false if cnpj.nil? || cnpj.blank?
    nulos = %w[11111111111111 22222222222222 33333333333333 44444444444444 55555555555555 66666666666666
               77777777777777 88888888888888 99999999999999 00000000000000]
    valor = cnpj.scan(/[0-9]/)
    if valor.length == 14 && !nulos.member?(valor.join)
      valor = valor.collect(&:to_i)
      soma = valor[0] * 5 + valor[1] * 4 + valor[2] * 3 + valor[3] * 2 + valor[4] * 9 + valor[5] * 8 + valor[6] * 7 + valor[7] * 6 + valor[8] * 5 + valor[9] * 4 + valor[10] * 3 + valor[11] * 2
      soma -= (11 * (soma / 11))
      resultado1 = [0, 1].include?(soma) ? 0 : 11 - soma
      if resultado1 == valor[12]
        soma = valor[0] * 6 + valor[1] * 5 + valor[2] * 4 + valor[3] * 3 + valor[4] * 2 + valor[5] * 9 + valor[6] * 8 + valor[7] * 7 + valor[8] * 6 + valor[9] * 5 + valor[10] * 4 + valor[11] * 3 + valor[12] * 2
        soma -= (11 * (soma / 11))
        resultado2 = [0, 1].include?(soma) ? 0 : 11 - soma
        return true if resultado2 == valor[13] # CNPJ válido
      end
    end
    false # CNPJ inválido
  end