Jump to content

dev botao

NFC-e com destinatário erro ao assinar


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

Recommended Posts

  • Membros Pro

Bom dia.

Preciso da ajuda dos amigos com NFC-e identificando destinatário.

Quando informo CPF ou CNPJ, ocorre erro de assinatura, dizendo que o CNPJ do certificado é diferente do cnpj do xml.

Debugando, verifiquei que ao assinar, ele recebe o cnpj correto, mas na rotina de assinar, ele manda gerarXML, que novamente assina, daí já recebe pela segunda vez sem este cnpj no xml.

Algué sabe dizer alguma coisa? Se, o destinatário está emitindo normalmente. Uso o trunk-2.

procedure NotaFiscal.Assinar;
var
  XMLStr: String;
  XMLUTF8: AnsiString;
  Leitor: TLeitor;
  CNPJEmitente, CNPJCertificado: String;
begin
  // VErificando se pode assinar esse XML (O XML tem o mesmo CNPJ do Certificado ??)
  CNPJEmitente    := OnlyNumber(NFe.Emit.CNPJCPF);
  CNPJCertificado := OnlyNumber(TACBrNFe(TNotasFiscais(Collection).ACBrNFe).SSL.CertCNPJ);

  // verificar somente os 8 primeiros digitos, para evitar problemas quando
  // a filial estiver utilizando o certificado da matriz
  if (CNPJCertificado <> '') and (Copy(CNPJEmitente, 1, 8) <> Copy(CNPJCertificado, 1, 8)) then
    raise EACBrNFeException.Create('Erro ao Assinar. O XML informado possui CNPJ diferente do Certificado Digital' + #13+
                                   'CNPJ NOTA       ='+ Copy(CNPJEmitente, 1, 8) +#13+
                                   'CNPJ CERTIFICADO='+Copy(CNPJCertificado, 1, 8) );

  // Gera novamente, para processar propriedades que podem ter sido modificadas
  XMLStr := GerarXML;

  // XML já deve estar em UTF8, para poder ser assinado //
  XMLUTF8 := ConverteXMLtoUTF8(XMLStr);

  with TACBrNFe(TNotasFiscais(Collection).ACBrNFe) do
  begin
    FXMLAssinado := SSL.Assinar(String(XMLUTF8), 'NFe', 'infNFe');
    FXMLOriginal := FXMLAssinado;

    Leitor := TLeitor.Create;
    try
      leitor.Grupo := FXMLAssinado;
      NFe.signature.URI := Leitor.rAtributo('Reference URI=');
      NFe.signature.DigestValue := Leitor.rCampo(tcStr, 'DigestValue');
      NFe.signature.SignatureValue := Leitor.rCampo(tcStr, 'SignatureValue');
      NFe.signature.X509Certificate := Leitor.rCampo(tcStr, 'X509Certificate');
    finally
      Leitor.Free;
    end;

    // Se for NFCe, deve gera o QR-Code para adicionar no XML após ter a
    // assinatura, e antes de ser salvo.
    // Homologação: 01/10/2015
    // Produção: 03/11/2015

    if (NFe.Ide.modelo = 65) and (Configuracoes.Geral.IncluirQRCodeXMLNFCe) then
    begin
      with TACBrNFe(TNotasFiscais(Collection).ACBrNFe) do
      begin
        NFe.infNFeSupl.qrCode := GetURLQRCode(NFe.Ide.cUF, NFe.Ide.tpAmb,
                                  onlyNumber(NFe.infNFe.ID), IfThen(NFe.Dest.idEstrangeiro <> '', NFe.Dest.idEstrangeiro, NFe.Dest.CNPJCPF),
                                  NFe.Ide.dEmi, NFe.Total.ICMSTot.vNF,
                                  NFe.Total.ICMSTot.vICMS, NFe.signature.DigestValue);
        GerarXML;
      end;
    end;

    if Configuracoes.Arquivos.Salvar and
       (not Configuracoes.Arquivos.SalvarApenasNFeProcessadas) then
    begin
      if NaoEstaVazio(NomeArq) then
        Gravar(NomeArq, FXMLAssinado)
      else
        Gravar(CalcularNomeArquivoCompleto(), FXMLAssinado);
    end;
  end;
end;

NFCE.XML

rotina destinatario.txt

rotina emitente.txt

Link to comment
Share on other sites

É no mínimo estranho. Aqui comigo está tudo dentro da normalidade. Notei que este XML postado está faltando muita coisa, inclusive a tag infNFeSupl.

Mas, esse erro começou exatamente a partir de quando? Depois de uma atualização ou outra mudança?

Acabei de enviar uma NFce com identificação, assinou, transmitiu sem problemas. Sugiro a você, analisar os fontes do ACBr, se estão mesmo sendo chamados os fontes do Trunk2. Tambem, analise se no seu HD não existe nenhum fonte relativo ao ACBr Trunk. 

_____________

Prates, Agnaldo

Link to comment
Share on other sites

  • Membros Pro

Obrigado Agnaldo pela ajuda

No cliente instalado até semana passada (janeiro) emitindo normalmente, hoje ocorreu o erro, fiz meu testes e comigo tambem aconteceu. Realmente nao estou entendendo.

Sem cpf/cnpj emite ok, mas com  dá erro

Até atualizei os fontes, recompilei, vi que os componentes nfe, escpos e danfecefortes estavam diferentes, reconfigurei e continua na mesma.

O interessantes é isto, debugando,  quando assina pela primeira vez, o cnpj tá lá, mas quando assina novamente, dá como nulo, gerando o xml com tag emit vazios.

continuo testando.

Se o seu deu certo, então nao é componente, é sempre assim, o erro está entre a cadeira e o computador. kkkkkkkk

Grato

Link to comment
Share on other sites

  • Moderadores

Porque tem ADD nesta linha? Vc está criando uma nota nova qdo tem identificação do cliente.

          if dmSisStock.Qr_ClientesCPF.AsString <> '' then
            Frm_Nfe2.ACBrNFe1.NotasFiscais.Add.NFe.Dest.CNPJCPF           := dmSisStock.Qr_ClientesCPF.AsString;

 

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.xpos.com.br
Link to comment
Share on other sites

  • Membros Pro

Na bucha André. Vc é o kara...

Indaguei o cliente, e ele me disse que até o momento somente digitava cpf e nome avulsos, e que somente agora pegou dados do banco de dados. Então o erro já existia.

Grato pela ajuda de todos.

Bom feriado...

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.