Ir para conteúdo
  • Cadastre-se

dev botao

Nfc-E - Nota Fiscal Do Consumidor Eletrônica


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

Recommended Posts

  • Moderadores

phulano 

temos um tópico criado pelo andré onde ele disponibilizou uma versão beta com as alterações para gerar a nfc-e mas não tem oficial

chegou a passar nesse tópico lendo e baixando a versão para testar?

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Roberto.Gordinho:

 

Poderia por favor passar a rotina:

montarqrcode  <== está no fim do seu texto na página 15.

Muito obrigado.

 

Me desculpem, eu não tinha entendido. Já resolvi. Obrigado

Editado por EDSON FERNANDES

Conectiva Soft - Automação Comercial - Visite nosso site: www.conectivasoft.com.br

Skype: [email protected]

Link para o comentário
Compartilhar em outros sites

estava com problema de erro 100 (qrcode inválido), passei a utilizar o código do amigo "ValdirDill" para converter string para hexa e deu certo!!!

 

 

obrigado.

Editado por EDSON FERNANDES

Conectiva Soft - Automação Comercial - Visite nosso site: www.conectivasoft.com.br

Skype: [email protected]

Link para o comentário
Compartilhar em outros sites

function TFormOrcamento.Gera_hashqrcode(Emissao: TDateTime;
  TotalNota, TotalICMS: Real; Chave, CPFCNPJ, DigVal: String): String;
var
 vTexto, vAmbiente, vdemi, vlnf, vlicms, vCPFCNPJ, vCidToken: String;
begin
 Case ACBrNFe1.Configuracoes.WebServices.ambiente of
  taHomologacao: begin
                  vAmbiente := '2';
                  vCidToken := '&cIdToken=' + '000001' + Copy(TiraCaracterDocumento(Trim(Dtm.QueryEmpresaCNPJF.AsString)), 1, 8) + IntToStr(YearOf(FormFuncao.ConexaoServidor(0))) + '0001';
                 end;
  taProducao: begin
               vAmbiente := '1';
               vCidToken := '&cIdToken=' + Dtm.QueryEmpresaIdToken1.AsString + Dtm.QueryEmpresaCodToken1.AsString;
              end;
 end;
 vdemi := StringtoHex(Formata_DataUTC(Emissao));
 vlnf := StringReplace(FormatFloat('###0.00', TotalNota), ',', '.', []);
 vlicms := StringReplace(FormatFloat('###0.00', TotalICMS), ',', '.', []);
 If TiraCaracterDocumento(Trim((CPFCNPJ))) <> '' then
  vCPFCNPJ := '&cDest=' + TiraCaracterDocumento(Trim((CPFCNPJ)))
 Else
  vCPFCNPJ := '';

 vTexto := 'chNFe=' + Chave +
   '&nVersao=' + '100' +
   '&tpAmb=' + vAmbiente +
   vCPFCNPJ +
   '&dhEmi=' + vdemi +
   '&vNF=' +  vlnf +
   '&vICMS=' +  vlicms +
   '&digVal=' + StringtoHex(DigVal) +
   vCidToken;

 Result := ACBrEAD1.CalcularHash(vTexto, dgstSHA1);
end;

function TFormOrcamento.Gera_chaveconsultaNFCe: String;
var
 vRetorno, vAmbiente, vChave, vDataEmissao, vlnf, vlicms, vHashqrcode,
 vCPFCNPJ: String;
begin
 Case ACBrNFe1.Configuracoes.WebServices.ambiente of
  taHomologacao: begin
                  vAmbiente := '2';
                  // Pega endereço de consulta publica da nfce
                  vRetorno := 'http://homologacao.sefaz.mt.gov.br/nfce/consultanfce?';//'http://www.hom.nfe.sefaz.mt.gov.br/portal/consultarNFCe.jsp';
                 end;
  taProducao: begin
               vAmbiente := '1';
               // Pega endereço de consulta publica da nfce
               vRetorno := 'http://www.sefaz.mt.gov.br/nfce/consultanfce?';//'http://www.sefaz.mt.gov.br/nfe/portal/consultanfce';
              end;
 end;
 vChave :=  QueryCupomChave.AsString;
 vDataEmissao := StringtoHex(Formata_DataUTC(QueryCupomDataHora.AsDateTime));
 vlnf := StringReplace(FormatFloat('###0.00', QueryCupomValorTotal.AsFloat), ',', '.', []);
 vlicms := StringReplace(FormatFloat('###0.00', QueryCupomValorICMS.AsFloat),',', '.', []);
 If TiraCaracterDocumento(Trim((QueryCupomCNPJ_RG.AsString))) <> '' then
  vCPFCNPJ := '&cDest=' + TiraCaracterDocumento(Trim((QueryCupomCNPJ_RG.AsString)))
 Else
  vCPFCNPJ := '';

 vHashqrcode := Gera_hashqrcode(QueryCupomDataHora.AsDateTime,
   QueryCupomValorTotal.AsFloat, QueryCupomValorICMS.AsFloat, vChave,
   QueryCupomCNPJ_RG.AsString, QueryCupomDigVal.AsString);
 vRetorno := vRetorno + 'chNFe=' + vChave +
   '&nVersao=' + '100' +
   '&tpAmb=' + vAmbiente +
   vCPFCNPJ +
   '&dhEmi=' + vDataEmissao  +
   '&vNF=' + vlnf +
   '&vICMS=' + vlicms +
   '&digVal=' + StringtoHex(QueryCupomDigVal.AsString) +
   '&cIdToken=' + Dtm.QueryEmpresaIdToken1.AsString + 
   '&cHashQRCode=' + vHashqrcode;

 Result := vRetorno;
end;

ta ai

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom se está preocupado com SC a licitação do Paf-ECF é para alguns anos e nosso estado como precursor do Paf-ECF ainda será vigente, foi um dos únicos estados que não irá aderir a NFC-e!

Mas não sobre sua pergunta, pois vai seguir a regras da NF-e somente com alterações

veja através das notas técnicas que possuem no portal da NF-e!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Membros

Olá leufmt,

 

Parece que você está passando apenas o Id do Token:

&cIdToken=' + Dtm.QueryEmpresaIdToken1.AsString

Eu faço aqui da seguinte forma:

 

'&cIdToken=<id_token><token>'

Att,

 

Sérgio

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

Olá leufmt,

 

Parece que você está passando apenas o Id do Token:

&cIdToken=' + Dtm.QueryEmpresaIdToken1.AsString

Eu faço aqui da seguinte forma:

'&cIdToken=<id_token><token>'

Att,

 

Sérgio

 

Tô sim Sergio, aqui:

'&cIdToken=' + Dtm.QueryEmpresaIdToken1.AsString + Dtm.QueryEmpresaCodToken1.AsString;

Link para o comentário
Compartilhar em outros sites

Pessoal, alguém sabe me dizer se e possível imprimir na impressora não fiscal (Daruma DR700) direto do FastReport?

 

Eu tenho a NFC-e gerando ok, gostaria de saber se vou ter que implementar rotina para montar o cupom utilizando os comandos da impressora, ou se tem como simplesmente "mandar" o cupom , previamente gerado pelo FastReport.

Link para o comentário
Compartilhar em outros sites

  • Membros

leufmt, veja no final da sua função:

'&cIdToken=' + Dtm.QueryEmpresaIdToken1.AsString + 
'&cHashQRCode=' + vHashqrcode;

Não seria ?

'&cIdToken=' + Dtm.QueryEmpresaIdToken1.AsString + Dtm.QueryEmpresaCodToken1.AsString +
'&cHashQRCode=' + vHashqrcode;

Sérgio

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

Pessoal, estou tentando autenticar com o Sefaz RS, e tendo o seguinte retorno de rejeição: NFC-e para destinatario contribuinte de ICMS.

 

Alguém sabe o que pode causar isso?

 

 

Estou com o mesmo problema....

 

   if Length(Trim(QCabNota.FieldByName('INSCRICAO').AsString)) > 0 then
                    begin
                        Dest.IE := QCabNota.FieldByName('INSCRICAO').AsString;
                        Dest.indIEDest := inContribuinte;
                    end
                    else
                    begin
                        Dest.IE := '';
                        Dest.indIEDest := inNaoContribuinte;
                    end;
 
Ou seja se tem inscrição estadual estou passando  Dest.indIEDest := inContribuinte; so que mesmo assim esta me dando erro: "Rejeicao: NFC-e para destinatario contribuinte de ICMS" O que pode ser..... Att  
Link para o comentário
Compartilhar em outros sites

 

Estou com o mesmo problema....

 

   if Length(Trim(QCabNota.FieldByName('INSCRICAO').AsString)) > 0 then
                    begin
                        Dest.IE := QCabNota.FieldByName('INSCRICAO').AsString;
                        Dest.indIEDest := inContribuinte;
                    end
                    else
                    begin
                        Dest.IE := '';
                        Dest.indIEDest := inNaoContribuinte;
                    end;
 
Ou seja se tem inscrição estadual estou passando  Dest.indIEDest := inContribuinte; so que mesmo assim esta me dando erro: "Rejeicao: NFC-e para destinatario contribuinte de ICMS" O que pode ser..... Att  

 

 

 

Acho que achei a resposta: 

 

Indicador da IE do Destinatário, informar:

1 - Contribuinte ICMS (informar a IE do destinatário);

2 - Contribuinte isento de Inscrição no cadastro de Contribuintes do ICMS;

9 - Não Contribuinte, que pode ou não possuir Inscrição Estadual no Cadastro de Contribuintes do ICMS.

Nota 1: No caso de NFC-e informar indIEDest=9 e não informar a tag IE do destinatário;

Nota 2: No caso de operação com o Exterior informar indIEDest=9 e não informar a tag IE do destinatário;

Nota 3: No caso de Contribuinte Isento de Inscrição (indIEDest=2), não informar a tag IE do destinatário.

Link para o comentário
Compartilhar em outros sites

  • Membros

ServerInfo, aconselho uma lida no manual com as especificações para o QRCode em http://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=jKHRw%20g4V%20E= e também dar uma lida nas páginas anteriores onde isso ja foi discutido.

 

Sérgio

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

ServerInfo, aconselho uma lida no manual com as especificações para o QRCode em http://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=jKHRw%20g4V%20E= e também dar uma lida nas páginas anteriores onde isso ja foi discutido.

 

Sérgio

 

Pois é, eu já havia dado uma olhada e pelo que pude ver estou fazendo corretamente, porém não consigo identificar onde é que eu possa estar me passando. Em um último exemplo que acabei de fazer, os seguintes valores foram com os quais me deparei (aparentam estarem corretos)

 

String pela qual o cHashQRCode é calculado:

 

chNFe=43140393483238000104650030000001891094555956&nVersao=100&tpAmb=2&cDest=01362164046&dhEmi=323031342D30332D30365430383A32383A32342D30333A3030&vNF=13.00&vICMS=0.00&digVal=347937374B4F387573516A484F33646A38706B544C6A544D6976553D&cIdToken=0000019348323820140001

 

cHasgQRCode da string acima: 983F2C34A64B3666356F6BC01DF1B18C2A0C0CD6

 

Resultado final (URL)

 

https://www.sefaz.rs.gov.br/NFCE/NFCE-COM.aspx?chNFe=43140393483238000104650030000001891094555956&nVersao=100&tpAmb=2&cDest=01362164046&dhEmi=323031342D30332D30365430383A32383A32342D30333A3030&vNF=13.00&vICMS=0.00&digVal=347937374B4F387573516A484F33646A38706B544C6A544D6976553D&cIdToken=000001&cHashQRCode=983F2C34A64B3666356F6BC01DF1B18C2A0C0CD6
 

 

 

Detalhe que agora eu ganho a mensagem Msg: 391 - QR-Code Inválido (ID Token)

 

Imagino que seja talvez pelo fato do cIdToken=0000019348323820140001 na string de calculo do hash e cIdToken=000001 na url final, embora esteja de acordo com o exemplo da pagina 20 do manual de padrões.

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

ServerInfo,

Cola a função que você esta usando para gerar o QrCode. Talvez fique mais fácil para ajudarmos.

 

Sérgio

function TFrmNotaFiscalEletronica.GetUrlQRCode: String;
const
  //Somente para teste, posteriormente deve ser pego de acordo com UF (pg4)
  URL_HOMOLOGACAO = 'https://www.sefaz.rs.gov.br/NFCE/NFCE-COM.aspx?';

  //Todo: Deve ser adicionado TimeZone de acordo com a localidade da nota
  function GetDataMascara(const ADateTime: TDateTime): String;
  var
    TimeZoneInformation: TTimeZoneInformation;
  begin
    GetTimeZoneInformation(TimeZoneInformation);
    Result := FormatDateTime('yyyy-mm-dd', ADateTime) + 'T' + FormatDateTime('hh:nn:ss', ADateTime) + '-0' + IntToStr(TimeZoneInformation.Bias div 60) + ':00';
  end;

var
  Token: String;
  Parametros: TPEMDados;
  AcbrEAD: TACBrEAD;
  Arquivo: TStringList;
  TokenCalculo: String;
  TokenURL: String;
begin
  Token := 'chNFe=' + ACbrNFe2.NotasFiscais[0].NFe.procNFe.chNFe + '&';
  Token := Token + 'nVersao=100&';
  Parametros := Bshop.Clients.PEM.GetDadosPEM(Bshop.Sistema.Empresa.Codigo);
  case Parametros.SituacaoNFe of
    snHabilitada: Token := Token + 'tpAmb=1&';
    snEmTeste: Token := Token + 'tpAmb=2&';
  end;
  if ACbrNFe2.NotasFiscais[0].NFe.Dest.CNPJCPF <> '' then
    Token := Token + 'cDest=' + ACbrNFe2.NotasFiscais[0].NFe.Dest.CNPJCPF + '&';

  Token := Token + 'dhEmi=' + StrToHex(GetDataMascara(ACbrNFe2.NotasFiscais[0].NFe.Ide.dEmi)) + '&';
  Token := Token + 'vNF=' + StringReplace(FormatFloat('0.00', ACbrNFe2.NotasFiscais[0].NFe.Total.ICMSTot.vNF), ',', '.', [rfReplaceAll]) + '&';
  Token := Token + 'vICMS=' + StringReplace(FormatFloat('0.00', ACbrNFe2.NotasFiscais[0].NFe.Total.ICMSTot.vICMS), ',', '.', [rfReplaceAll]) + '&';
  Token := Token + 'digVal=' + StrToHex(ACbrNFe2.NotasFiscais[0].NFe.signature.DigestValue) + '&';

  if Parametros.SituacaoNFe = snEmTeste then
    Token := Token + 'cIdToken=<idToken>'
  else
    Token := Token + 'cIdToken=000001&';/// Código fornecido pela SEFAZ para a empresa emissora (até 36 dígitos)

  TokenCalculo := StringReplace(Token, '<idToken>', '000001' + Copy(ACbrNFe2.NotasFiscais[0].NFe.Emit.CNPJCPF, 1, 8) + FormatDateTime('yyyy', Now) + '0001', []);

  AcbrEAD := TACBrEAD.Create(nil);
  try
    Token := Token + '&cHashQRCode=' + AcbrEAD.CalcularHash(TokenCalculo, dgstSHA1);
  finally
    if Assigned(AcbrEAD) then
      FreeAndNil(AcbrEAD);
  end;

  //URL de homologacao e producao é a mesma para RS
  Token := Bshop.NFCeURLDictionary[ACbrNFe2.NotasFiscais[0].NFe.Emit.EnderEmit.UF] + Token;

  if Assigned(Parametros) then
    FreeAndNil(Parametros);

  TokenURL := StringReplace(Token, '<idToken>', '000001', []);

  Result := TokenURL;
end;

Link para o comentário
Compartilhar em outros sites

Ola pessoal boa tarde, boa tarde Roberto.Godinho, baixei a ultima versão das alterações que vcs tem feito para imprimirmos a NFC-e com o fastreport, mas agora esta me dando um erro qdo estou compilando o projeto, que falta a propriedade frxPDFExport.CheckboxAsShape>, sera que isso e a versao do fastreport? desde ja agradeço a atenção de todos...

 

Luciano...

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3553 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.

The popup will be closed in 10 segundos...