Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

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

Postado

É 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

  • Membros Pro
Postado

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

  • Moderadores
Postado

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
  • Membros Pro
Postado

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...

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.