Ir para conteúdo
  • Cadastre-se

dev botao

Nfc-E - Nota Fiscal Do Consumidor Eletrônica


  • Este tópico foi criado há 3554 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Ola Ivr, quanto ao item 1, a propriedade visible da logo esta sendo setada para false sempre que não houver uma Imagem informado, este tratamento esta sendo feito no script do arquivo fr3 (aba código). Para mim esta funcionando perfeitamente. Mas enfim, a sua solução funciona da mesma forma.

       if <Parametros."Imagem"> = '' then                                                                      
       begin                              
               ReportTitle1.Visible := false;                                                       
       end;

Quanto a propriedade stretch do QR Code, se você deixa-la ligada vai deformar a imagem e vai prejudicar a leitura do qr code.
Eu informo uma imagem de 4,3 cm e não corta. Verifique se você não esta gerando o QR Code muito grande, se for o caso, seria melhor você gerar a imagem um pouco menor de modo que não seja necessário ligar o stretch.

 

DANFeNFCe.rar

Editado por Roberto.Godinho
Link para o comentário
Compartilhar em outros sites

Ola Ivr, quanto ao item 1, a propriedade visible da logo esta sendo setada para false sempre que não houver uma Imagem informado, este tratamento esta sendo feito no script do arquivo fr3 (aba código). Para mim esta funcionando perfeitamente. Mas enfim, a sua solução funciona da mesma forma.

       if <Parametros."Imagem"> = '' then                                                                      
       begin                              
               ReportTitle1.Visible := false;                                                       
       end;

Quanto a propriedade stretch do QR Code, se você deixa-la ligada vai deformar a imagem e vai prejudicar a leitura do qr code.

Eu informo uma imagem de 4,3 cm e não corta. Verifique se você não esta gerando o QR Code muito grande, se for o caso, seria melhor você gerar a imagem um pouco menor de modo que não seja necessário ligar o stretch.

 

Talvez seja alguma limitação do FastReport pois não consigo acessar a aba "código" ela aparece mas não acesso ela. Tenho a versão 4.12.2 que vem junto com o Delphi XE2.

Gravo a imagem no formato png 300 x 300 e a impressão com Stretch false sai errado e com Stretch true sai correto.

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde,

Como forma de retribuir a imensa ajuda que os componentes do ACBr nos dão, já que não pago o SAC tento contribuir com código ou encontrar bugs.

Criei um layout para NFC-e no FastReport com largura do papel de 8 cm para ser utilizado em impressoras não fiscais, mas nada impede de ser impresso em papel A4.

As alterações foram feitas somente no carregamento dos dados para o ClientDataSet do FastReport (ACBrNFeDANFEFRDM.pas) como:

* Criado o ClientDataSet para a tag "pag" (tag exlusiva para NFC-e)

* Alterado o ClientDataSet "Identificacao" para carregar a "MensagemFiscal" e compatibilizado a tag "DEmi" para a NFCe mostrar Data e Hora.

* Criado no CDS "Destinatario" o campo "Consumidor".

Nenhuma destas alterações influenciam ou causa "problemas" na impressão da NF-e.

Em anexo os arquivos ACBrNFeDANFEFRDM.pas e ACBrNFeDANFEFRDM.dfm com os últimos fontes do svn.

Limitações:

1. A impressão do QR Code vem de uma imagem externa, da mesma forma que é utilizado na impressão da logomarca da empresa.

A fazer:

1. Selecionar a URL dos Estados para gerar o endereço do site de consulta.

Pág. 14 do Manual de Especificações Técnicas do DANFE NFC-e e QR Code - versão 3.1

2. Criar uma nova propriedade no componente Danfe em FastReport para receber o caminho da imagem QR Code.

Utilização:

1. Caminho do arquivo FastReport:

ACBrNFeDANFEFR1.FastFile := 'C:\DANFeNFCe.fr3';

2. Caminho da imagem QR Code:

ACBrNFeDANFEFR1.Logo := C:\QR.jpeg';

3. Imprimir:

ACBrNFe1.NotasFiscais.Clear;
ACBrNFe1.NotasFiscais.LoadFromFile(PathDoXML);
ACBrNFe1.NotasFiscais.Imprimir;

Em anexo como ficou minha impressão, espero que ajude.

Bom dia, 

  Qual componente voce esta utilizando para gerar o QRCODE?

Link para o comentário
Compartilhar em outros sites

Bom dia amigos,

 

eu encontrei esse componente http://www.han-soft.com/barcode2dgen.php

fiz testes aqui e funcionou perfeitamente, porem ele não tem

integração direta com o FastReport então gero o QrCode com ele salvo e seto o arquivo salvo da mesma forma como estava fazendo com o arquivo

salvo pelo Google charts, porem eliminando o problema de possivel falta de sinal de internet.

 

Espero ter ajudado os amigos.

 

Emerson.

Editado por emcassio
Link para o comentário
Compartilhar em outros sites

Bom dia amigos,

 

eu encontrei esse componente http://www.han-soft.com/barcode2dgen.php

fiz testes aqui e funcionou perfeitamente, porem ele não tem

integração direta com o FastReport então gero o QrCode com ele salvo e seto o arquivo salvo da mesma forma como estava fazendo com o arquivo

salvo pelo Google charts, porem eliminando o problema de possivel falta de sinal de internet.

 

Espero ter ajudado os amigos.

 

Emerson.

ola qual o tamanho do formato que vc salva o QrCode ?

Link para o comentário
Compartilhar em outros sites

Bom dia amigos,

 

eu encontrei esse componente http://www.han-soft.com/barcode2dgen.php

fiz testes aqui e funcionou perfeitamente, porem ele não tem

integração direta com o FastReport então gero o QrCode com ele salvo e seto o arquivo salvo da mesma forma como estava fazendo com o arquivo

salvo pelo Google charts, porem eliminando o problema de possivel falta de sinal de internet.

 

Espero ter ajudado os amigos.

 

Emerson.

Olá pessoal

 

Estou fazendo testes usando o Zint BarCode que é OPENSOURCE, instalei ele como componente no delphi7 e funciona, basta setar o tipo de codigo de barras e salvar como bmp:

 

   

    zint.Barcode.Data:=strQrCode;
    bc:=TBitmap.Create;
    zint.Barcode.GetBarcode(bc);
    bc.SaveToFile(ExtractFilePath(Application.ExeName)+'qrcode.bmp');
    freeandnil(bc);
    ACBrNFeDANFEFR1.ImgQrCode:=ExtractFilePath(Application.ExeName)+'qrcode.bmp';
 
Evandro
Link para o comentário
Compartilhar em outros sites

 

Olá pessoal

 

Estou fazendo testes usando o Zint BarCode que é OPENSOURCE, instalei ele como componente no delphi7 e funciona, basta setar o tipo de codigo de barras e salvar como bmp:

 

   

    zint.Barcode.Data:=strQrCode;
    bc:=TBitmap.Create;
    zint.Barcode.GetBarcode(bc);
    bc.SaveToFile(ExtractFilePath(Application.ExeName)+'qrcode.bmp');
    freeandnil(bc);
    ACBrNFeDANFEFR1.ImgQrCode:=ExtractFilePath(Application.ExeName)+'qrcode.bmp';
 
Evandro

 

passa o link por favor, pois o que eu tenho não instala no delphi7

Link para o comentário
Compartilhar em outros sites

Evandromira,

 

Tentei instalar esse componente Zint aqui no meu delphi 7 para testar mas não deu certo não.

 

dá o seguinte erro na linha:

 

  ABitmap.SetSize(ASymbol.bitmap_width, ASymbol.bitmap_height);
 
[Error] uZintInterface.pas(192): Undeclared identifier: 'SetSize'
[Fatal Error] ZintBarcode.dpk(35): Could not compile used unit '..\..\uZintInterface.pas'
 
Estou usando o DPK da pasta D10 como vc disse.
Como vc contornou isso.
Link para o comentário
Compartilhar em outros sites

 

Evandromira,

 

Tentei instalar esse componente Zint aqui no meu delphi 7 para testar mas não deu certo não.

 

dá o seguinte erro na linha:

 

  ABitmap.SetSize(ASymbol.bitmap_width, ASymbol.bitmap_height);
 
[Error] uZintInterface.pas(192): Undeclared identifier: 'SetSize'
[Fatal Error] ZintBarcode.dpk(35): Could not compile used unit '..\..\uZintInterface.pas'
 
Estou usando o DPK da pasta D10 como vc disse.
Como vc contornou isso.

 

emcassio

 

Simples, comente a linha e coloque:

  ABitmap.Width:=ASymbol.bitmap_width;
  ABitmap.Height:=ASymbol.bitmap_height;
 
e na uzintinterface também vai acontecer a mesma coisa:
 
//    ABitmap.SetSize(Round(bmp.Width * FScale), Round(bmp.Height * FScale));
   ABitmap.Width:=Round(bmp.Width * FScale);
   ABitmap.Height:=Round(bmp.Height * FScale);
 

Evandro

Link para o comentário
Compartilhar em outros sites

emcassio

 

Simples, comente a linha e coloque:

  ABitmap.Width:=ASymbol.bitmap_width;
  ABitmap.Height:=ASymbol.bitmap_height;
 
e na uzintinterface também vai acontecer a mesma coisa:
 
//    ABitmap.SetSize(Round(bmp.Width * FScale), Round(bmp.Height * FScale));
   ABitmap.Width:=Round(bmp.Width * FScale);
   ABitmap.Height:=Round(bmp.Height * FScale);
 

Evandro

Eu Consegui instalar o componete agora duvida, qual o paramentro voce utilizar      ZintBarcodeComponent1.Barcode.BarcodeType:=????  

 

Ebnezer.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
Boa tarde, estou com problema ao tentar consultar a NFc-e via QrCode, recebo uma mensagem no browser: Erro 220 inconsistencia de informacao QR Code.
Segue abaixo como faço para montar a string:
 
function TFrmEnvioNfe.GerarStringQrCodeNFC ( pcldToken : String ) : WideString;
var
  URL, cDest, tpAmb, chaveNfe, Hash_SHA1, cHashQRCode : String;
  AnalisarString:TStringList;
begin
  with FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe do
    begin
      // TODO - Tem que pegar a URL automatica de acordo com o emitente
      if FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.Ide.tpAmb = taProducao then
      else
        URL := 'sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp?';
        //URL := 'homnfe.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp?';
 
 
      if FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.Ide.tpAmb = taProducao then
        tpAmb := '1'
      else
        tpAmb := '2';
      cDest := Iif(Length(FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.Dest.CNPJCPF) > 0, FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.Dest.CNPJCPF, '');
 
      chaveNfe := SoNumeros(FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.infNFe.ID);
      // parametros para o QRCode ==> digVal - Digest Value da NFC-e
      FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.procNFe.digVal := signature.DigestValue;
 
      cHashQRCode := '';
      cHashQRCode :=  URL +
              'chNFe='     +  chaveNfe + //FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.procNFe.chNFe +
              '&nVersao='  + '100' +
              '&tpAmb='    + tpAmb +
              Iif((Length(cDest) > 0),('&cDest=' + cDest), '') +
              '&dhEmi='    + StringToHex(DateTimeTodhUTC(FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.Ide.dEmi,
                                  GetUTC(FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.emit.enderEmit.UF,
                                         FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.Ide.dEmi))) +
              '&vNF='      + FormatFloat(',0.00;-,0.00', FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF) +
              '&vICMS='    + FormatFloat(',0.00;-,0.00', FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.Total.ICMSTot.vICMS) +
              '&digVal='   + StringToHex(FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.procNFe.digVal) +
              '&cIdToken=' + '000001';
 
      AnalisarString:= TStringlist.create;
      AnalisarString.Add(cHashQRCode);
      AnalisarString.SaveToFile('c:\AnalisarString.txt');
 
      Hash_SHA1 := FDataModule.ACBrEAD.CalcularHash(UTF8Encode(cHashQRCode), dgstSHA1);
      Result  := cHashQRCode + '&cHashQRCode=' + Hash_SHA1;
    end;
end;
Editado por brasil
Link para o comentário
Compartilhar em outros sites

 

Boa tarde, estou com problema ao tentar consultar a NFc-e via QrCode, recebo uma mensagem no browser: Erro 220 inconsistencia de informacao QR Code.

Segue abaixo como faço para montar a string:

 
      chaveNfe := SoNumeros(FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.infNFe.ID);
      // parametros para o QRCode ==> digVal - Digest Value da NFC-e
      FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.procNFe.digVal := signature.DigestValue;
 
      cHashQRCode := '';
      cHashQRCode :=  URL + //sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp?
              'chNFe='     +  chaveNfe + //FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.procNFe.chNFe +
              '&nVersao='  + '100' +
              '&tpAmb='    + tpAmb +
              Iif((Length(cDest) > 0),('&cDest=' + cDest), '') +
              '&dhEmi='    + StringToHex(DateTimeTodhUTC(FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.Ide.dEmi,
                                  GetUTC(FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.emit.enderEmit.UF,
                                         FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.Ide.dEmi))) +
              '&vNF='      + FormatFloat(',0.00;-,0.00', FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF) +
              '&vICMS='    + FormatFloat(',0.00;-,0.00', FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.Total.ICMSTot.vICMS) +
              '&digVal='   + StringToHex(FDataModule.ACBrNFe20.NotasFiscais.Items[0].NFe.procNFe.digVal) +
              '&cIdToken=' + '000001';
 
      Hash_SHA1 := FDataModule.ACBrEAD.CalcularHash(UTF8Encode(cHashQRCode), dgstSHA1);
      Result  := cHashQRCode + '&cHashQRCode=' + Hash_SHA1;

 

até onde eu entendi não se usa a url para gerar o hash,

a url é incluida depois que gera o hash

 

Sequência sobre o qual deverá ser calculado hash sha1:
 
chNFe=43120910585504000174650010000000541123456781&nVersao=100&tpAmb=2&dhEmi=323031322d30392d32375431363a32303a33342d30333a3030&vNF=1000.00&vICMS=180.00&digVal=37327151612b623074616f514f3966414a7766646c5875715176383d &cIdToken=0000011058550420130001
 
Resultado do cálculo do hash sha1 sobre a sequência:
3FACB55248244D98C658FC8A826413BCEF10A4AE
 
url:
http://www.sefaz.mt.gov.br/nfe/portal/consultanfce?chNFCe=43120910585504000174650010000000541123456781&nVersao=100& tpAmb=2&dhEmi=323031322d30392d32375431363a32303a33342d30333a3030&vNF=1000.00&vICMS=180.00&digVal=37327151612b623074616f514f3966414a7766646c5875715176383d &cIdToken=000001&cHashQRCode= 3FACB55248244D98C658FC8A826413BCEF10A4AE
 
Editado por datilas
Link para o comentário
Compartilhar em outros sites

Amigao usei o proprio componente acbr pra calcular o hash e deu certo, vou anexar o endereço de consulta do xml que enviei e o proprio xml.

http://homologacao.sefaz.mt.gov.br/nfce/consultanfce?chNFe=51131009471363000180650010000000021000000025&nVersao=100&tpAmb=2&dhEmi=323031332d31302d31345430383a30343a35372d30343a3030&vNF=54.91&vICMS=0&digVal=7a75777551485a6a68574c4f7952776a366253484f4d52686a68673d&cIdToken=000001&cHashQRCode=5487648014f46599400a6e10150604c960f246cc

Coloca esse endereco no seu browser, que vai dar certo a consulta, sai um erro de imagem Qd no site mais isso ta normal inclusive em produção esta dando essa mesma mensagem, mais esta consultando normalmente.

 

Udenilson

eu criei um outro topico :  até agora não consegui resolver,

como voce faz para gerar o xml sem o grupo ipi

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

 

até onde eu entendi não se usa a url para gerar o hash,

a url é incluida depois que gera o hash

 

Sequência sobre o qual deverá ser calculado hash sha1:
 
chNFe=43120910585504000174650010000000541123456781&nVersao=100&tpAmb=2&dhEmi=323031322d30392d32375431363a32303a33342d30333a3030&vNF=1000.00&vICMS=180.00&digVal=37327151612b623074616f514f3966414a7766646c5875715176383d &cIdToken=0000011058550420130001
 
Resultado do cálculo do hash sha1 sobre a sequência:
3FACB55248244D98C658FC8A826413BCEF10A4AE
 
url:
http://www.sefaz.mt.gov.br/nfe/portal/consultanfce?chNFCe=43120910585504000174650010000000541123456781&nVersao=100& tpAmb=2&dhEmi=323031322d30392d32375431363a32303a33342d30333a3030&vNF=1000.00&vICMS=180.00&digVal=37327151612b623074616f514f3966414a7766646c5875715176383d &cIdToken=000001&cHashQRCode= 3FACB55248244D98C658FC8A826413BCEF10A4AE
 

 

 

Mudei conforme sua orientação e verifiquei no manual mas continuo sem consegui fazer a consulta pelo QRCODE

OBS: Estou fazendo os testes usando o Webservice de AM

Peguei no site http://portalnfce.sefaz.am.gov.br/desenvolvedor/documentacao-tecnica/

URL para consulta via QRCODE e: http://sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp?

 

'&cIdToken=' + '000001' + LeftStr(Dest.CNPJCPF, 8) + '20130001'; //&cIdToken=0000011058550420130001

Result    := URL + cHashQRCode + '&cHashQRCode=' + Hash_SHA1;

Usando a URL como disse acima abre o browser mas nao aparece nada

 

qrcode.bmp

Editado por brasil
Link para o comentário
Compartilhar em outros sites

Mudei conforme sua orientação e verifiquei no manual mas continuo sem consegui fazer a consulta pelo QRCODE

OBS: Estou fazendo os testes usando o Webservice de AM

Peguei no site http://portalnfce.sefaz.am.gov.br/desenvolvedor/documentacao-tecnica/

URL para consulta via QRCODE e: http://sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp?

 

'&cIdToken=' + '000001' + LeftStr(Dest.CNPJCPF, 8) + '20130001'; //&cIdToken=0000011058550420130001

Result    := URL + cHashQRCode + '&cHashQRCode=' + Hash_SHA1;

Usando a URL como disse acima abre o browser mas nao aparece nada

 

Cara MT so funcionou qdo eu gerei com ele no hash, eu tava fazendo sem e nao dava certo de modo algum, ai so foi incluir o danado e funcionou. Pelo menos em Mato Grosso, tem que por na composição pra hash, senão nao dara certo.. experiementa fazer o teste.

Link para o comentário
Compartilhar em outros sites

Cara MT so funcionou qdo eu gerei com ele no hash, eu tava fazendo sem e nao dava certo de modo algum, ai so foi incluir o danado e funcionou. Pelo menos em Mato Grosso, tem que por na composição pra hash, senão nao dara certo.. experiementa fazer o teste.

muito obrigado eu acabei de receber esse erro aqui nos meus teste, vou corrigir agora e testar.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3554 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.