Ir para conteúdo
  • Cadastre-se

dev botao

ACBrNFSeX - Erro ao ler xml NFSe do provedor EL


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

Recommended Posts

Bom Dia a todos, identifiquei um erro ao tentar ler xml de Nota de Serviço do provedor EL. A modificação que eu fiz foi necessária porque estava gerando Access Violation. Na verificação do IF se ANodes fosse igual a nil no else ele estava tentando acessar o objeto que apontava para nil fazendo gerar o erro. 

EL.LerXml.pas

Editado por Leonardo Batista
.
Link para o comentário
Compartilhar em outros sites

  • Consultores

bom dia,

pode anexar novamente o arquivo alterado?

Obrigado

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

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

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Criada a TK-4741 para avaliação.

Obrigado pela contribuição.

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

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

 

 

Link para o comentário
Compartilhar em outros sites

Boa Tarde @Alexandre de Paula tive uma reclamação do meu suporte que não estava puxando a data,  e tive que realizar outras alterações vou subir o arquivo novamente aqui com as 2 correções a de cima e a de agora, caso precise que abra um nova Post só me avisar.

As alterações de agora foram feitas no método: LerXmlNfse

EL.LerXml.pas

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Leonardo,

Pelo que notei, podemos ter uma lista de 2 ou mais serviços ou apenas 1 serviço, correto?

Você poderia anexar um XML de cada uma dessas duas situações.

Você disse que o seu suporte reclamou que não estava lendo a data, qual data?

Não encontrei nada na sua unit que consta alguma alteração referente a data.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

A primeira alteração que fiz foi no bloco de código abaixo, onde estava acessando o objeto ANodes[i] e mudei para AuxNode.

with NFSe.Servico.ItemServico[i] do
      begin
        CodLCServ     := ObterConteudo(AuxNode.Childrens.FindAnyNs('CodigoServico116'), tcStr);
        CodServ       := ObterConteudo(AuxNode.Childrens.FindAnyNs('CodigoServicoMunicipal'), tcStr);
        CodigoCnae    := ObterConteudo(AuxNode.Childrens.FindAnyNs('CodigoCnae'), tcStr);
        Quantidade    := ObterConteudo(AuxNode.Childrens.FindAnyNs('Quantidade'), tcDe4);
        Unidade       := ObterConteudo(AuxNode.Childrens.FindAnyNs('Unidade'), tcStr);
        ValorUnitario := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorServico'), tcDe2);
        Descricao     := ObterConteudo(AuxNode.Childrens.FindAnyNs('Descricao'), tcStr);
        Descricao := StringReplace(Descricao, FpQuebradeLinha,
                                      sLineBreak, [rfReplaceAll, rfIgnoreCase]);
        Aliquota      := ObterConteudo(AuxNode.Childrens.FindAnyNs('Aliquota'), tcDe4);
        ValorISS      := ObterConteudo(AuxNode.Childrens.FindAnyNs('ValorIssqn'), tcDe4);

        aValorTotal := Quantidade * ValorUnitario;

        ValorTotal := RoundTo(aValorTotal, - 2);
      end;

 

A segunda alteração foi no metodo abaixo onde o objeto que ele acessava era o ANode e mudei para o AuxNode:

A data que me refiro é a data de emissão.  

if AuxNode <> nil then
  begin
    with NFSe do
    begin
      CodigoVerificacao := ObterConteudo(AuxNode.Childrens.FindAnyNs('Id'), tcStr);
      Link := CodigoVerificacao;
      Link := StringReplace(Link, '&amp;', '&', [rfReplaceAll]);
      DataEmissao := ObterConteudo(AuxNode.Childrens.FindAnyNs('DataEmissao'), tcDatHor);
      OutrasInformacoes := ObterConteudo(AuxNode.Childrens.FindAnyNs('Observacao'), tcStr);
      OutrasInformacoes := StringReplace(OutrasInformacoes, FpQuebradeLinha,
                                      sLineBreak, [rfReplaceAll, rfIgnoreCase]);
      SituacaoNfse := StrToStatusNFSe(Ok, ObterConteudo(AuxNode.Childrens.FindAnyNs('Status'), tcStr));

      Servico.Valores.IssRetido := FpAOwner.StrToSituacaoTributaria(Ok, ObterConteudo(AuxNode.Childrens.FindAnyNs('IssRetido'), tcStr));
    end;

 

Em relação aos Xmls o cliente que eu tenho utiliza apenas um serviço na NFSe, portanto vou ficar te devendo um XML com mais serviços.

Vou te mandar o XML no privado por conter dados sensíveis. 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Leonardo,

Faça uma copia da sua alteração.

Depois execute os passos abaixo:

Você tem fontes com alterações locais?
Verifica se não tem nenhuma unit do ACBr com uma bolinha vermelha em seu ícone, caso afirmativo delete a unit.
Atualize todos os fontes de todas as pastas.
Reinstale o ACBr com a opção de apagar arquivos antigos marcada.
Compile a aplicação com a opção Build.

Por fim, tenta ler o XML da nota que estava dando problemas.
 

 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

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