Como ja é de conhecimento, o ACBr gera a NF-e sempre utilizando aspas (") ao invés de Apostrofe (').
Porém foi verificado que o retorno que o SEFAZ devolve utiliza apostrofe nas Tags, e como esse retorno é incorporado no XML da NF-e, o mesmo fica com algumas tag utilizando apostrofe ao invés de aspas
Exemplo do retorno:
<?xml version="1.0" encoding="UTF-8"?><protNFe versao='4.00'><infProt Id='ID141200000856482'><tpAmb>2</tpAmb><verAplic>PR-v4_6_6</verAplic><chNFe>41200902499797000149550010000409741000687910</chNFe><dhRecbto>2020-09-22T11:40:25-03:00</dhRecbto><nProt>141200000856482</nProt><digVal>FmfNHEoUX+tT3NBtPqg0bfC+z+4=</digVal><cStat>100</cStat><xMotivo>Autorizado o uso da NF-e</xMotivo></infProt></protNFe>
O nosso cliente acaba tendo problema ao realizar a importação da DU-e, pois acusam que o XML está inconsistente.
Para corrigir internamente realizei a alteração no método TNFeConsulta.TratarResposta da Unit ACBrNFeWebServices da seguinte forma:
// O código abaixo é bem mais rápido que "GerarXML" (acima)...
AProcNFe := TProcNFe.Create;
try
AProcNFe.XML_NFe := RemoverDeclaracaoXML(XMLOriginal);
// TRECHO ALTERADO
AProcNFe.XML_Prot := StringReplace(NFeRetorno.XMLprotNFe, '''', '"', [rfReplaceAll]);
AProcNFe.Versao := NFeRetorno.protNFe.Versao;
if AProcNFe.Versao = '' then
AProcNFe.Versao := FPVersaoServico;
AjustarOpcoes( AProcNFe.Gerador.Opcoes );
AProcNFe.GerarXML;
XMLOriginal := AProcNFe.Gerador.ArquivoFormatoXML;
finally
AProcNFe.Free;
end;
Gostaria de sugerir a implementação de um tratamento para este caso, pois imagino que a situação pode acontecer com outras pessoas.