Ir para conteúdo
  • Cadastre-se

Erro ao importar XML mal gerado


Ver Solução Respondido por Sady Martins,
  • Este tópico foi criado há 201 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Encontrei um XML mal gerado que contém a seguinte tag:

                <ISSQNtot>
                    <dCompet>2025-05-20</dCompet>
                </ISSQNtot>

E no arquivo ACBrNFe.XmlReader tem o seguinte trecho: 

  AuxNode := ANode.Childrens.Find('ISSQNtot');
  if (AuxNode <> nil) then
  begin
    NFe.Total.ISSQNtot.vServ   := ObterConteudo(AuxNode.Childrens.Find('vServ'), tcDe2);
    NFe.Total.ISSQNtot.vBC     := ObterConteudo(AuxNode.Childrens.Find('vBC'), tcDe2);
    NFe.Total.ISSQNtot.vISS    := ObterConteudo(AuxNode.Childrens.Find('vISS'), tcDe2);
    NFe.Total.ISSQNtot.vPIS    := ObterConteudo(AuxNode.Childrens.Find('vPIS'), tcDe2);
    NFe.Total.ISSQNtot.vCOFINS := ObterConteudo(AuxNode.Childrens.Find('vCOFINS'), tcDe2);

    if NFe.infNFe.Versao >= 3 then
    begin
      NFe.Total.ISSQNtot.dCompet     := ObterConteudo(AuxNode.Childrens.Find('dCompet'), tcDat);
      NFe.Total.ISSQNtot.vDeducao    := ObterConteudo(AuxNode.Childrens.Find('vDeducao'), tcDe2);
      NFe.Total.ISSQNtot.vOutro      := ObterConteudo(AuxNode.Childrens.Find('vOutro'), tcDe2);
      NFe.Total.ISSQNtot.vDescIncond := ObterConteudo(AuxNode.Childrens.Find('vDescIncond'), tcDe2);
      NFe.Total.ISSQNtot.vDescCond   := ObterConteudo(AuxNode.Childrens.Find('vDescCond'), tcDe2);
      NFe.Total.ISSQNtot.vISSRet     := ObterConteudo(AuxNode.Childrens.Find('vISSRet'), tcDe2);
      NFe.Total.ISSQNtot.cRegTrib    := StrToRegTribISSQN(Ok, ObterConteudo(AuxNode.Childrens.Find('cRegTrib'), tcStr));
    end;
  end;

Quando chega na leitura da tag cRegTrib dá erro ao tentar converter com StrToRegTribISSQN(), já que a tag cRegTrib não existe.
Fiz a seguinte alteração:
 

      cRegTrib := ObterConteudo(AuxNode.Childrens.Find('cRegTrib'), tcStr);
      if (cRegTrib <> EmptyStr) then
      begin
        NFe.Total.ISSQNtot.cRegTrib    := StrToRegTribISSQN(Ok, cRegTrib);
      end;

Não quis atribuir RTISSNenhum porque não se trata de serviço e, no meu entendimento, seria gerar uma informação que não existe.
Tanto que as outras tags não recebem valor algum.

Valeu!

  • Curtir 1
  • Consultores
Postado

anexe sua unit modificada com a sugestão

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Solution
Postado

Bom dia @Juliomar Marchetti

Baixei um arquivo ACBrNFe.XmlReader.pas atualizado e notei que já implementaram a alteração:

 

      aValor := ObterConteudo(AuxNode.Childrens.Find('cRegTrib'), tcStr);
      if aValor = '' then
        aValor := '0';
      NFe.Total.ISSQNtot.cRegTrib := StrToRegTribISSQN(Ok, aValor);

Só não concordei com terem atribuído como nenhum, já que quando acontece esse problema não é nota de serviço.
Mas de qualquer forma vou deixar o código assim mesmo.

Obrigado meu caro!

  • Curtir 1
  • Este tópico foi criado há 201 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.