Arquivos da categoria: NFe

API para integração com o módulo Web do Focus NFe

O sistema Focus NFe é dividido em duas partes, o módulo Web e o Núcleo.

O núcleo é o responsável por toda a lógica puramente inerente à Nota Fiscal Eletrônica, ou seja, a geração dos arquivos XML e DANFe, a comunicação com a receita para autorização, cancelamento e outras operações, a escolha entre servidor normal ou SCAN (contingência) e por aí vai.

Já o Módulo Web é o responsável pela interação com o usuário do sistema, são telas desenhadas para funcionar dentro do navegador e destinadas aos cadastros básicos (pessoas, produtos, etc) e para o preenchimento da Nota Fiscal em si. É responsabilidade do módulo web também toda a lógica de cálculo automatizado de impostos, funcionalidade muito apreciada pelos nossos usuários pois evita a necessidade de preenchimento de dezenas de campos referentes aos vários tributos existentes no Brasil.

Além do uso comum do sistema, ou seja, o preenchimento da NFe nas telas web e envio das notas, existem hoje duas formas de integrar outros sistemas com o Focus NFe. A integração direta e a integração 2 (que nome dar?). Na integração direta é responsabilidade do sistema que está se integrando de preencher todos os dados da nota fiscal, enviar diretamente ao núcleo do Focus NFe e consultar o resultado um tempo depois. Esta integração é explicada aqui (link para um post que explique isso).

O Módulo Web também pode ser integrado com sistemas externos, desta forma o sistema que está se integrando não precisa fazer todos os cálculos de impostos, cadastrando via API os destinatários da nota, os produtos e a nota em si.

Conceitos básicos da API

A API se baseia em domínios e tokens de acesso. Ao contratar o Focus NFe na modalidade “Integração Módulo Web” o programador receberá um identificador de domínio e um token de acesso de nosso suporte técnico. Toda a comunicação deverá ser feita através da utilização destas informações. Veja o exemplo abaixo, ele faz uma busca por uma pessoa com cnpj 07.504.505/0001-32 no domínio 100.

<a href="http://localhost:3000/api/pessoas?domain=1&amp;access_token=J8Lqxw81upY8m0oTyE30ubwh9Umin6wQ&amp;cnpj=03693480614355">https://app.acras.com.br/web_nfe/api/pessoas?domain=100&amp;</a><a href="http://localhost:3000/api/pessoas?domain=1&amp;access_token=J8Lqxw81upY8m0oTyE30ubwh9Umin6wQ&amp;cnpj=03693480614355">access_token=J8Lqxw81upY8m0oTyE30ubwh9Umin6wQ&amp;cnpj=03693480614355</a>

Veja que os dois primeiros parâmetros da URL são o domain e o access_token.

 

API de pessoas

Índice

sintaxe: [GET] /pessoas
parâmetros: cnpj ou cpf
retorno:
 -quando encontrar uma pessoa retorna um xml representando a pessoa e status 200
 -quando não encontrar uma pessoa retorna vazio e status 404

Não disponibilizamos uma listagem completa de todas as pessoas cadastradas para evitar solicitações que sobrecarreguem o serviço. Todo índice deverá conter filtragem por CNPJ ou CPF.

Criação

<strong><span style="text-decoration: underline;">sintaxe</span>:</strong> [POST] /pessoas
<span style="text-decoration: underline;"><strong>uso</strong></span><strong>:</strong>
  -Todos os parâmetros devem ser enviados como sub-parâmetros de pessoa,
   ou seja pessoa['nome'], pessoa['cpf'], etc.
<span style="text-decoration: underline;"><strong>parâmetros</strong></span><strong>:</strong>
 -<strong>nome</strong>: o nome da pessoa com até 60 caracteres
 -<strong>cpf ou cnpj</strong>: somente um dos dois sendo cpf com 11 ou cnpj com 14 caracteres
 -<strong>inscricao_estadual ou isento_inscricao_estadual</strong>: inscricao_estadual com até
  14 caracteres ou o isento_inscricao_estadual preenchido com o valor 1 para
  indicar que é isento.
 -telefone: 10 caracteres exatamente 
 -email: Endereço de e-mail da pessoa. Se for informado, o Focus NFe irá disparar
  um e-mail para esta pessoa sempre que uma NFe seja autorizada para ela.
 -habilita_emissao_nfe: 0 - Não, 1 - Sim. Se estiver desabilitado não será possível
  emitir NFe para esta pessoa e algumas validações serão desligadas
 -logradouro(<strong>obrigatório se habilita_nfe=1</strong>): nome do logradouro
 -numero(<strong>obrigatório se habilita_nfe=1</strong>): número do endereço
 -complemento: complemento do endereço
 -bairro(<strong>obrigatório se habilita_nfe=1</strong>): bairro da pessoa
 -municipio(<strong>obrigatório se habilita_nfe=1</strong>): verifique abaixo as duas formas de
  preencher o município, se for preenchido codigo_municipio os outros dois
  parâmetros serão ignorados
   -codigo_municipio: Código IBGE do município
   -nome_municipio e uf_municipio: Dois parâmetros, um contendo o nome e outro contendo a UF
 -cep(<strong>obrigatório se habilita_nfe=1</strong>): cep do endereçamento da pessoa
 -codigo_pais: Código de país conforme a tabela do
<strong> SISBACEN </strong>(<a href="http://www.mdic.gov.br/arquivos/dwnl_1211380426.pdf">http://www.mdic.gov.br/arquivos/dwnl_1211380426.pdf</a>).
  Se vazio será assumido código 1058 (Brasil)
<span style="text-decoration: underline;"><strong>retorno</strong></span>:
 -quando a pessoa for criada retorna um xml representando a pessoa e status 201 (created)
 -quando não criar a pessoa por alguma falha de validação são retornados os erros de
  validação e o status 200 (OK)<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;"> </span>


Atualização

<span style="text-decoration: underline;"><strong>sintaxe</strong></span>: [PUT] /pessoas/{id}
<span style="text-decoration: underline;"><strong>parâmetros</strong></span>: são os mesmos parâmetros da criação, apenas repare como na URL utilizada
            deve ser passado o id do registro, pois é uma atualização

API de Produtos

 

Índice

sintaxe: [GET] /produtos
parâmetros: codigo
retorno:
 -quando encontrar um produto retorna um xml representando o produto e status 200
 -quando não encontrar um produto retorna vazio e status 404

Criação

<strong>sintaxe:</strong> [POST] /produtos
<strong>uso</strong><strong>:</strong>
  -Todos os parâmetros devem ser enviados como sub-parâmetros de produto,
   ou seja produto['codigo'], produto['descricao'], etc.
<strong>parâmetros</strong><strong>:</strong>
 -<strong>codio</strong>: código do produto contendo até 60 caracteres, para integração é obrigatório
 -<strong>descricao</strong>: descrição do produto contendo até 120 caracteres
 -<strong>codigo_ncm ou capitulo_ncm</strong>: um dos dois onde codigo deve conter exatamente 8 caracteres e capitulo exatamente 2. 
   Este parâmetro deve ser informado conforme a configuração
 -unidade_comercial: Unidade em que o produto é comercializado. Se for vazio será assumido 'un'
 -valor_unitario_comercial: Valor unitário do produto

Atualização

<strong>sintaxe:</strong> [PUT] /produtos/{id}

Aqui são aceitos os mesmos parâmetros da criação, observar que o método é o PUT e que deve ser passado o id do registro que está sendo atualizado.

API de Notas Fiscais

<strong>sintaxe</strong>: [POST] /notas_fiscais
<strong>parâmetros</strong>:
  -<strong>natureza_operacao</strong>: Descritivo com até 60 caracteres da natureza da operação desta nota fiscal
  -<strong>tipo_documento</strong>: ENTRADA | SAIDA
  -data_emissao: Data de emissão deste documento fiscal no formato aaaa-mm-dd se vazio é assumido como hoje
  -data_entrada_saida: Data de entrada ou saída das mercadorias no formato aaaa-mm-dd
  -hora_entrada_saida: Hora de entrada ou saída das mercadorias no formato hh:mm:ss
  -cnpj_emitente: CNPJ do emitente. Obrigatório somente para domínios que possuem mais de um emitente, se 
                  houver apenas um o Focus NFe irá escolher automaticamente.
  -destinatario_id: id do destinatario desta nota. Este id é adquirido quando se faz a criação ou busca de 
                    uma pessoa pela API.
  -enviar: se estiver com o valor 1 efetua o envio para a receita, senão somente grava a nota para envio manual. Este parâmetro deve ser enviado na raiz dos params, ou seja, não fica abaixo do nota_fiscal.

Arquivo de envio de NFe

Quem utiliza o sistema Focus NFe para integração possui à sua disposição duas formas de enviar as notas fiscais, a primeira é enviar diretamente as notas para o web service do sistema, a outra é gerando um arquivo localmente e utilizando o comunicador por arquivo que nós disponibilizamos.

Das duas formas, o arquivo a ser enviado deve ser um arquivo no formato YAML. A documentação detalhada de quais campos devem ser enviados e quais são opcionais você pode encontrar aqui e abaixo segue um exemplo de uma nfe representada em um arquivo yaml.

natureza_operacao: Venda de Mercadorias
forma_pagamento: 2
data_emissao: 2011-10-11
data_entrada_saida: 2011-10-11
tipo_documento: 1
finalidade_emissao: 1
cnpj_emitente: "10607261000162"
nome_emitente: Emitente LTDA
nome_fantasia_emitente: Fantasia do Emitente
logradouro_emitente: Rua Sete de Abril
numero_emitente: 127
bairro_emitente: Centro
municipio_emitente: Curitiba
uf_emitente: PR
cep_emitente: "84035440"
inscricao_estadual_emitente: "9054052682"
nome_destinatario: Farmacia Legal LTDA
cnpj_destinatario: "09171618000170"
inscricao_estadual_destinatario: "9042072416"
telefone_destinatario: "4123571642"
logradouro_destinatario: PR 412 KM 5
numero_destinatario: 5358
bairro_destinatario: Emiliano Perneta
municipio_destinatario: São José dos Pinhais
uf_destinatario: PR
pais_destinatario: Brasil
cep_destinatario: "83255000"
icms_base_calculo: 0
icms_valor_total: 0
icms_base_calculo_st: 0
icms_valor_total_st: 0
valor_frete: 0.0000
valor_seguro: 0
valor_total_ii: 0
valor_ipi: 0
modalidade_frete: 0
items:
- numero_item: 1
  codigo_produto: 7896214000010
  descricao: LOÇÃO BRLHANTE 150 ML
  cfop: 5102
  unidade_comercial: un
  quantidade_comercial: 2.0000
  valor_unitario_comercial: 9.9900
  valor_unitario_tributavel: 9.9900
  unidade_tributavel: un
  codigo_ncm: 96
  quantidade_tributavel: 2.0000
  valor_bruto: 19.9800
  icms_situacao_tributaria: 103
  icms_origem: 0
  pis_situacao_tributaria: 99
  cofins_situacao_tributaria: 99
- numero_item: 2
  codigo_produto: 7896054711244
  descricao: ACETONA CINCO VERDE 100 ML
  cfop: 5102
  unidade_comercial: un
  quantidade_comercial: 24.0000
  valor_unitario_comercial: 1.8900
  valor_unitario_tributavel: 1.8900
  unidade_tributavel: un
  codigo_ncm: 96
  quantidade_tributavel: 24.0000
  valor_bruto: 45.3600
  icms_situacao_tributaria: 103
  icms_origem: 0
  pis_situacao_tributaria: 99
  cofins_situacao_tributaria: 99

 

Utilizando o comunicador por arquivo

Uma das formas de se comunicar com o Focus NFe é gerando um arquivo texto no formato especificado.

Para sistemas desktop que não desejam implementar uma comunicação direta com nossos web services criamos um agente de comunicação que lê os arquivos gerados em uma pasta e envia para o Focus NFe. Em um segundo momento o próprio agente consulta o status da nota e faz o download dos arquivos do DANFe e XML da nota.

Para fazer o download do comunicador clique aqui

Funcionamento

Sempre que o comunicador é chamado ele irá seguir os passos abaixo:

  1. Enviar os arquivos de nfe que estão no diretório de envio e criar uma pendência de retorno para esta nota.
  2. Enviar os arquivos de cancelamento que estão no diretório de envio e criar uma pendência de retorno para este cancelamento.
  3. Consultaros retornos pendentes.
    1. Havendo retorno o comunicador irá gravar o arquivo de retorno com o nome do identificador e a extensão ret. Por exemplo, para uma nfe com identificador único 99887766 será gravado o arquivo 99887766.ret no diretório de retorno.
    2. Se o retorno é referente a uma emissão de NFe e esta nota foi autorizada, o comunicador já irá fazer o download do DANFe e do XML gravando os dois arquivos em um subdiretório do diretório de retorno. Para o DANFe o nome do subdiretório será DANFEs e para o XML será XMLs.

Envio do arquivo para emissão da NFe

A aplicação do cliente deverá gravar um arquivo contendo o conteúdo da NFe e cujo nome é composto de um identificador único e com extensão nfe. Por exemplo, se o identificador único da nota no sistema cliente é 99887766 deverá ser gravado no diretório de envio com a extensão nfe, ou seja 99887766.nfe.

Envio do arquivo para cancelamento de NFe

A aplicação cliente deverá gravar um arquivo contendo um texto de justificativa de cancelamento. O arquivo deverá ser nomeado com o identificador único da nota e com extensão can. Em nosso exemplo acima o nome do arquivo seria 99887766.can. Este arquivo deverá ser gravado no diretório de envio de dados.

Envio do carta de correção eletrônica (CCe)

A aplicação cliente deverá gravar um arquivo contendo um texto da correção a ser aplicada. O arquivo deverá ser nomeado com o identificador único da nota e com extensão  cce e gravar no diretório de envio de dados.

O PDF e XML da carta de correção serão gravados no diretório de retorno, subdiretório CCes.

Reconsulta de nfe

O comunicador faz adiciona pendências de consulta automaticamente para todo envio e cancelamento comandado. Se por algum motivo houver a necessidade de comandar novamente uma consulta, basta acionar o comunicador com o parâmetro ref e o valor sendo o id único da nota. Por exemplo, para comandar a reconsulta da nota com id único 99887766 basta chamar o comunicador como na linha de comando a seguir:

$ focusNFeFileCommunicator ref=99887766

Importante

O comunicador possui uma execução linear e ao final é desativado. Isto quer dizer que ele não repete as consultas até que as notas estejam em estado final. É de responsabilidade da aplicação do cliente chamar o comunicador de tempos em tempos até que tenha as respostas para seus envios.

Configuração

Após rodar o comunicador pela primeira vez ele irá gerar um arquivo de configuração com informações padrão, como no exemplo abaixo.

[Diretorios]
envio=P:\envios\
retorno=P:\retornos\
logs=P:\logs
[Conexao]
url=http://producao.acrasnfe.acras.com.br/
token={token-enviado-pelo-suporte-focusnfe}

Na seção Diretorios são configurados os diretórios de comunicação (envio e retorno) onde a aplicação do cliente irá salvar e ler arquivos respectivamente. Também é configurado o diretório de logs, onde o comunicador irá gravar os logs das operações realizadas por ele.

A seção Conexao possui duas configurações cruciais para a correta comunicação com o Focus NFe. A url determina o endereço de comunicação que pode ser o de homologação (http://homologacao.acrasnfe.acras.com.br) e produção (http://producao.acrasnfe.acras.com.br).

O token é a chave de acesso, fornecida pelo suporte, que irá garantir que a aplicação do cliente tem acesso ao Focus NFe.

Passo a passo para criação de usuário na receita do Paraná

O primeiro passo para a utilização de um sistema de NFe no estado do Paraná é a criação de um usuário no ReceitaPR. Este tutorial ensina como fazer este cadastro.

Passo 1: Em seu navegador acesse o link a seguir: http://www.receita.pr.gov.br/receitapr/usuarios

Passo 2: Nesta tela preencha os dados da pessoa que assina pela empresa (Deve ser o representante legal da empresa) e clique em Enviar.

A receita irá enviar um e-mail para seu endereço

Passo 3: Receba o e-mail da receita e clique no link enviado, você será levado à página da receita para imprimir o Termo de Adesão.

Passo 4: Conforme instruções do termo de adesão, deve-se imprimir, assinar e reconhecer firma e enviar por correio para o endereço da Receita contido no próprio Termo.

Passo 5: Feito isso a receita irá processar o pedido quando receber a carta enviada, para acompanhar seu pedido clique no link a seguir:http://www.receita.pr.gov.br/receitapr/consultas/processo_homologacao.

Uma vez liberado seu login será possível solicitar o uso do sistema FocusNFe.

Como exportar um certificado do tipo A1

Passo 1: Em seu navegador Internet Explorer, acesse o menu Ferramentas ˃ Opções da Internet.

 

Passo 2:Nesta tela acesse a aba Conteúdo. Na aba Conteúdo clique no botão Certificados.

Passo 3: Serão exibidos os certificados instalados em sua máquina. Clique sobre o nome da empresa cujo certificado deseja exportar. O nome deverá ficar com fundo azul. Em seguida clique no botão Exportar.

Passo 4: O assistente de exportação será iniciado. Clique em Avançar.

Passo 5: Selecione a opçãoSim, exportar a chave particular e clique em Avançar.

Passo 6: Na tela seguinte deixe as opções conforme a imagem abaixo e clique em Avançar.

Passo 7: Digite a senha do certificado, confirme e clique em Avançar.

Passo 8: Escolha um nome e um local para o arquivo a ser gravado e clique em Salvar. Depois clique em Avançar.

Passo 9: Confira o nome do arquivo escolhido e clique em Avançar.

Passo 10: Clique em Concluir e a exportação será realizada.

Passo 11: Envie o arquivo juntamente com a senha para suporte-nfe@acras.com.br.

Suporte sempre presente

Agora no sistema Focus NFe o suporte está sempre presente.

Muitos usuários já perceberam e utilizam o botão “Solicitar Suporte” que encontra-se na parte superior direita da tela principal do sistema, como mostrado na imagem abaixo:

Ao clicar no botão, uma solicitação de suporte será aberta e se o suporte estiver disponível na hora (nosso suporte funciona no horário comercial) uma tela de chat ao vivo será aberta.

Esta forma de suporte é melhor do que o chat comum ou o telefone pois o analista de suporte receberá informações de quem está solicitando. Muitas vezes conseguimos descobrir o problema antes mesmo de o usuário relatá-lo.

Outro fator importante é que neste sistema de suporte temos textos prontos para explicar e orientar em diversas situações, diminuindo o tempo que o nosso cliente leva para ser atendido.

Por isso não hesite. Precisando de suporte clique no botão “Solicitar Suporte”.