ACBrNFe - Componente OpenSource para Nota Fiscal Eletrônica - NFe - Parte 2

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (17)  (0)

O componente ACBrNFe é um projeto para gerar, validar, transmitir, receber as respostas dos WebServices da Receita e imprimir o DANFe. Este componente faz parte do Projeto ACBr e também é gratuíto. Veja neste artigo os principais métodos do componente ACBrNFe

Após instalar o componente conforme as instruções do artigo anterior vamos conhecer os principais comandos do ACBrNFe.  

Consultar Status do Serviço

Para consultar o Status do Serviço dos WebServices da Receita, use o comando abaixo:

ACBrNFe1.WebServices.StatusServico.Executar; - Este comando, retorna True quando o serviço está em operação.
Após este comando, é possível acessar a propriedade ACBrNFe1.WebServices.StatusServico.Msg para ver a mensagem de retorno do WebService.
 
Exemplo de uso:
ACBrNFe1.WebServices.StatusServico.Executar;
ShowMessage(ACBrNFe1.WebServices.StatusServico.Msg);
 

Criar uma Nota Fiscal Eletrônica

Para criar uma Nota Fiscal Eletrônica, utilize o comando ACBrNFe1.NotasFiscais.Add e preencha todas as informações referente a NFe.

Exemplo de Uso:
  ACBrNFe1.NotasFiscais.Clear; // Limpas as Notas Fiscais que possam estar na memória do componente
  with ACBrNFe1.NotasFiscais.Add do
  begin
    Identificacao.NaturezaOperacao  := 'VENDA PRODUCAO DO ESTAB.';
    Identificacao.Codigo            := 1;
    Identificacao.Numero          := 1;
    Identificacao.Serie              := 1;
    Identificacao.DataEmissao  := Date;
    Identificacao.DataSaida       := Date;
    Identificacao.Tipo                := tSaida;
    Identificacao.FormaPagamento   := pgAVista;
 
    Emitente.CNPJ                      := '00000000000000';
    Emitente.IE                          := '123456789012';
    Emitente.Nome.RazaoSocial  := 'Razao Social Emitente';
    Emitente.Nome.Fantasia       := 'Nome Fantasia Emitente';
    Emitente.Endereco.Fone       := '(15) 3259XXXX';
    Emitente.Endereco.CEP         := '18270000';
    Emitente.Endereco.Logradouro      := 'Rua Onze de Agosto';
    Emitente.Endereco.Numero           := '3202';
    Emitente.Endereco.Complemento  := '';
    Emitente.Endereco.Bairro              := 'Centro';
    Emitente.Endereco.Cidade.Codigo   := 3554003;
    Emitente.Endereco.Cidade.Descricao := 'Tatui';
    Emitente.Endereco.UF                  := 'SP';
 
    Destinatario.CNPJCPF                   := '00000000000137';
    Destinatario.Endereco.CEP           := '18270410';
    Destinatario.Endereco.Logradouro      := 'Praça Anita Costa';
    Destinatario.Endereco.Numero           := '0034';
    Destinatario.Endereco.Complemento  := '';
    Destinatario.Endereco.Bairro              := 'Centro';
    Destinatario.Endereco.Cidade.Codigo  := 3554003;
    Destinatario.Endereco.Cidade.Descricao := 'Tatuí';
    Destinatario.Endereco.UF               := 'SP';
    Destinatario.Endereco.Fone            := '1532599600';
    Destinatario.IE                              := '000000000000';
    Destinatario.NomeRazao                := 'D.J. COM. E LOCAÇÃO DE SOFTWARES LTDA - ME';
 
    with DadosProdutos.Add do
    begin
      CFOP          := 5101;
      Codigo        := '67';
      Descricao     := 'ALHO 400 G';
      Quantidade    := 100;
      Unidade       := 'KG';
      ValorTotal    := 100;
      ValorUnitario := 10;
      with Tributos do
      begin
        with ICMS do
        begin
          CST := '00';
          ICMS00.Aliquota  := 18;
          ICMS00.Valor     := 180;
          ICMS00.ValorBase := 1000;
        end;
      end;
    end;
 
    ValoresTotais.BaseICMS     := 1000;
    ValoresTotais.ValorICMS    := 180;
    ValoresTotais.ValorNota    := 1000;
    ValoresTotais.ValorProduto := 1000;
  end;

Com o exemplo acima, criamos uma nota Fiscal em Memória, é possível adicionar várias notas usando o comando ACBrNFe1.NotasFiscais.Add várias vezes, para que depois possamos gerar um lote de envio.
Se você já possui o XML gerado, e não deseja adicionar as notas usando as propriedades do componente, é possível carregar um XML, para isso use o seguinte comando:
 
ACBrNFe1.NotasFiscais.Add.XML.LoadFromFile(cPathArquivo);
 
Com o comando LoadFromFile, o arquivo será adicionado a memória do componente ACBrNFe, e será possível transmitir essa NFe.
 
Veremos abaixo como Salvar o XML ou Enviar a NFe. 

Salvar o XML da NFe 

Após incluirmos uma NFe usando o exemplo acima, podemos salvar o XML que será enviado para a Receita. 

Exemplo: 
ACBrNFe1.NotasFiscais.GerarNFe;
ACBrNFe1.NotasFiscais.Items[0].XML.SaveToFile(ExtractFileDir(application.ExeName)+ACBrNFe1.NotasFiscais.Items[0].XML.NFeChave+'-NFe.xml');
 
Com o comando acima, iremos salvar a primeira Nota Fiscal na pasta do programa, com o nome que começará pela chave da NFe e terminará com -NFe.xml. Caso tenha adicionado mais de uma nota fiscal, repita o comando ACBrNFe1.NotasFiscais.Items[0].XML.SaveToFile mudando o número do item(Items[0], Items[1], Items[2], etc.)

Enviar uma ou mais NFe

Para enviar uma NFe, temos dois métodos disponíveis. O método ACBrNFe1.Enviar(NumLote);  irá gerar o(s) XML da(s) NFe(s), assiná-la(s), validá-la(s), enviá-la(s) e por fim imprimí-la(s) (se forem autorizadas) de forma automática.

Caso não queira que o DANFe seja impresso automaticamente, use a sequência de comandos abaixo:
ACBrNFe1.NotasFiscais.GerarNFe;
ACBrNFe1.NotasFiscais.Assinar;
ACBrNFe1.NotasFiscais.Valida;
ACBrNFe1.WebServices.Envia(NumLote);
 
Depois para imprimir use o comando ACBrNFe1.NotasFiscais.Items[i].XML.Imprimir;

Consultar uma NFe

Para consultar uma NFe, é possível consultar baseado na Chave da NFe ou carregando o XML da NFe já autorizada.

Exemplo usando a chave da NFe:
ACBrNFe1.WebServices.Consulta.NFeChave := self.NotasFiscais.Items[0].XML.NFeChave;
ACBrNFe1.WebServices.Consulta.Executar;
 
Exemplo carregando um XML:
ACBrNFe1.NotasFiscais.Clear;
ACBrNFe1.NotasFiscais.Add.XML.LoadFromFile(cPathArquivo);
ACBrNFe1.Consultar;

Cancelar uma NFe 

Para cancelar uma NFe, e necessário informar a Chave da NFe, número do protocolo de autorização e uma justificativa para o cancelamento. O cancelamento também é possível ser realizado carregando um XML de uma NFe ou informando os campos citados acima.

Exemplo usando a Chave e Protocolo da NFe:
ACBrNFe1.WebServices.Cancelamento.NFeChave    := chNFe;
ACBrNFe1.WebServices.Cancelamento.Protocolo     := Protocolo;
ACBrNFe1.WebServices.Cancelamento.Justificativa := AJustificativa;
 
Exemplo carregando um XML
ACBrNFe1.NotasFiscais.Clear;
ACBrNFe1.NotasFiscais.Add.XML.LoadFromFile(cPathArquivo);
if not(InputQuery('WebServices Cancelamento', 'Justificativa', vAux)) then
   exit;
ACBrNFe1.Cancelamento(vAux);

Imprimir uma NFe baseado no XML

Para imprimir uma NFe baseado num XML, basta usar os comandos abaixo:

ACBrNFe1.NotasFiscais.Clear;
ACBrNFe1.NotasFiscais.Add.XML.LoadFromFile(cPathArquivo);
ACBrNFe1.NotasFiscais.Imprimir;

Validar uma NFe

Para validar o XML de uma NFe use os comandos abaixo:

ACBrNFe1.NotasFiscais.Clear;
ACBrNFe1.NotasFiscais.Add.XML.LoadFromFile(cPathArquivo);
ACBrNFe1.NotasFiscais.Valida;
 
Caso exista algum erro no arquivo, será criada uma exception mostrando a mensagem de erro.

Inutilizar uma faixa de numeração

Para inutilizar uma faixa de numeração da NFe, use o comando abaixo:

ACBrNFe1.WebServices.Inutiliza(CNPJ. Justificativa, Ano, Modelo, Serie, NumeroInicial, NumeroFinal);
 
 
 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?