eNotas Gateway - Ruby

Wrapper não OFICIAL Ruby da API do eNotas Gateway, plataforma de emissâo automática de nota fiscal eletrônica de serviço (NFS-e), Produto (NF-e) e Consumidor (NFC-e).

Esse projeto foi um fork de -> https://github.com/12min/enotas-client

A documentação completa dos endpoints pode ser encontrada aqui: API NFS-e eNotas Gateway, e aqui API NF-e eNotas Gateway.

Mais detalhes: enotasgw.com.br

Exemplo em PHP para nfse pode ser encontrado aqui. - na biblioteca oficial.

Exemplo em PHP para nfe e nfce pode ser encontrado aqui. - na biblioteca oficial.

Exemplos diversos para emissão de nfe encontrado aqui. - na biblioteca oficial.

Instalação

Adicione o código abaixo ao Gemfile da sua aplicação:

gem 'enotas_nfe'

E execute:

$ bundle

Ou instale manualmente:

$ gem install enotas_nfe

Configurando a empresa

client = Enotas::Client.new('sua-api-key-do-e-notas', 'nfse')
empresa = EnotasNfe::Model::Empresa.new(client.get_empresa('id-da-empresa-no-enotas'))

## realize os ajustes da empresa, como nomeFantasia, email, etc

## atualize ou crie uma empresa
client.create_update_empresa(empresa)

Adicionando/trocando logotipo

client = Enotas::Client.new('sua-api-key-do-e-notas', 'nfse')
empresa = EnotasNfe::Model::Empresa.new(client.get_empresa('id-da-empresa-no-enotas'))
empresa.logotipo = open('http://www.example.com/foo.png')
client.('id-da-empresa-no-enotas', empresa)

Uso básico para NFSE

  • Instancie o cliente passando sua API key:
client = Enotas::Client.new('sua-api-key-do-e-notas', 'nfse')

Agora já podemos emitir uma nota!

  • Emitindo uma nova nota de SERVIÇO:
nfe = EnotasNfe::Model::Nfe.new
nfe.tipo = 'NFS-e'
nfe.idExterno = '1'
nfe.ambienteEmissao = 'Homologacao'

nfe.cliente = {
  nome: 'Luis Fernando Pimenta',
  email: '[email protected]',
  cpfCnpj: '33199707807'
}

nfe.cliente.endereco = {
  uf: 'PR',
  cidade: 'Curitiba',
  logradouro: 'Rua 01',
  numero: '112',
  bairro: 'Centro',
  cep: '80000000'
}

nfe.enviarPorEmail = true

nfe.servico = {
  descricao: 'Reparo em computador',
  aliquotaIss: 5,
  issRetidoFonte: true,
  descricaoServicoMunicipio: "Reparo em computador",
  ufPrestacaoServico: "PR",
  municipioPrestacaoServico: "Curitiba",
  valorCofins: 0,
  valorCsll: 0,
  valorInss: 0,
  valorIr: 0,
  valorPis: 0
}

nfe.valorTotal = 1.00

#enviando a nota
nfe.nfse_create('id-da-empresa-no-enotas', nfe)

Uso básico para NFE

  • Instancie o cliente passando sua API key:
client = Enotas::Client.new('sua-api-key-do-e-notas', 'nfe')

Agora já podemos emitir uma nota!

  • Emitindo uma nova de VENDA de produto - NFe:
nfe = EnotasNfe::Model::Nfe.new
nfe.id = '1'
nfe.ambienteEmissao = "Homologacao" # "Producao" ou "Homologacao"
nfe.naturezaOperacao = 'Venda'
nfe.finalidade = 'Normal'
nfe.consumidorFinal = true
nfe.indicadorPresencaConsumidor = true

nfe.cliente = {
  tipoPessoa: 'F',
  indicadorContribuinteICMS: "NaoContribuinte",
  nome: 'Luis Fernando Pimenta',
  email: '[email protected]',
  cpfCnpj: '33199707807',
  telefone: '19981328642',
  inscricaoMunicipal: '',
  inscricaoEstadual: '',
}

nfe.cliente.endereco = {
  uf: 'PR',
  cidade: 'Curitiba',
  logradouro: 'Rua 01',
  numero: '112',
  bairro: 'Centro',
  cep: '80000000'
}

nfe.enviarPorEmail = true

produto = EnotasNfe::Model::Produto.new
produto.cfop = "5101"
produto.codigo = '1'
produto.descricao = 'pneu'
produto.ncm = '38151210'
produto.unidadeMedida = 'UN'
produto.valorUnitario = 1.00
produto.impostos = EnotasNfe::Model::Impostos.new
produto.impostos.icms = EnotasNfe::Model::Icms.new
produto.impostos.icms.situacaoTributaria = '102'
produto.impostos.icms.origem = 0
produto.impostos.pis = EnotasNfe::Model::Pis.new
produto.impostos.pis.situacaoTributaria = '07'
produto.impostos.cofins = EnotasNfe::Model::Cofins.new
produto.impostos.cofins.situacaoTributaria = '07'

nfe.itens << produto

nfe.informacoesAdicionais = "I - Documento emitido por ME ou EPP optante pelo Simples Nacional.\r\n II - Não gera direito a crédito fiscal de ICMS, de ISS e de IPI." #opcional

#enviando a nota
client.nfe_create('id-da-empresa-no-enotas', nfe)

#cancelando uma nota
client.nfe_delete('id-da-empresa-no-enotas', id-da-nota)

Testando a gem localmente

gem build enotas_nfe.gemspec
gem install enotas-nfe-0.0.1.gem
abra o irb
require 'enotas_nfe'
e siga os passos acima

Contribuindo

Para contruibuir de uma forma adequada, siga os passos abaixo:

  • Faça um fork do projeto;
  • Após clonar seu fork, crie um novo branch com a feature que deseja implementar;
  • Envie seu branch para seu repositório remoto;
  • Solicite um PR a partir desse novo branch enviado.

Issues e comentários são sempre bem-vindos no repoistório oficial: https://github.com/eNotasGW/.

ROADMAP

Quer contribuir e não sabe por onde começar? Veja nosso ROADMAP:

  • Escrever testes;
  • Normalizar campos dos models para o padrão ruby;
  • Cobrir os endpoints referentes ao resource "empresa".

License

Esta gem está disponível através da licença MIT.