Olá. Realizei três alterações e gostaria que passassem a fazer parte do projeto. As duas primeiras dizem respeito à descrição do evento, que estava ficando em branco no objeto mesmo estando preenchida no XML de cancelamento. A terceira alteração diz respeito ao formato de data. Ao ler XMLs de cancelamento emitidos em contingência vi que o formato de data/hora estava dd/mm/yyyyhh:mm:ss.
1) Na unit pcnRetEnvEventoNFe adicionei a linha "infEvento.DetEvento.descEvento := Leitor.rCampo(tcStr, 'descEvento');"
2) Na unit pcnEnvEventoNFe adicionei a linha "infEvento.DetEvento.descEvento := RetEventoNFe.InfEvento.DetEvento.descEvento;"
3) Na unit pcnLeitor alterei o trecho relativo ao tcDatHor:
tcDatHor:
begin
if length(ConteudoTag)>0 then
if pos('/', ConteudoTag) = 0 then
result := EncodeDate(StrToInt(copy(ConteudoTag, 01, 4)), StrToInt(copy(ConteudoTag, 06, 2)), StrToInt(copy(ConteudoTag, 09, 2))) +
EncodeTime(StrToInt(copy(ConteudoTag, 12, 2)), StrToInt(copy(ConteudoTag, 15, 2)), StrToInt(copy(ConteudoTag, 18, 2)), 0)
else
result := EncodeDate(StrToInt(copy(ConteudoTag, 07, 4)), StrToInt(copy(ConteudoTag, 04, 2)), StrToInt(copy(ConteudoTag, 01, 2))) +
EncodeTime(StrToInt(copy(ConteudoTag, 11, 2)), StrToInt(copy(ConteudoTag, 14, 2)), StrToInt(copy(ConteudoTag, 17, 2)), 0)
else
result := 0;
end;
pcnRetEnvEventoNFe.pas
pcnEnvEventoNFe.pas
pcnLeitor.pas