procedure TDFeSSL.ValidarCNPJCertificado(CNPJDocumento: String);
var
ErroCNPJ, CNPJCertificado: String;
begin
CNPJDocumento := OnlyNumber(CNPJDocumento);
if (CNPJDocumento = '') or // Informou vazio
(Length(CNPJDocumento) <> 14) then // Não é CNPJ
exit;
CNPJCertificado := OnlyNumber(CertCNPJ); // Lendo CNPJ do Certificado...
if (CNPJCertificado = '') or // Não foi capaz de ler CNPJ do Certificado (Senha, NumSerie, Path... há algo errado na configuração)
(Length(CNPJCertificado) <> 14) then // Não é CNPJ (estranho.. pode ser um eCPF)
exit;
ErroCNPJ := ValidarCNPJ(CNPJDocumento);
if (ErroCNPJ <> '') then
raise EACBrDFeException.CreateDef('Erro CNPJ Documento: '+ErroCNPJ);
{ Deve verificar somente os 8 primeiros digitos, para evitar problemas quando
a filial estiver utilizando o certificado da matriz }
if (Copy(CNPJDocumento, 1, 8) <> Copy(CNPJCertificado, 1, 8)) then
raise EACBrDFeException.Create('O CNPJ do Documento é diferente do CNPJ do Certificado Digital' );
end;
Boa tarde, tudo bem?
A regra estava impedindo de aprovar o DCe com um cnpj diferente no emitente do certificado digital.
if (Copy(CNPJDocumento, 1, <> Copy(CNPJCertificado, 1, 8)) then
raise EACBrDFeException.Create('O CNPJ do Documento é diferente do CNPJ do Certificado Digital' );