Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado (editado)

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
.
  • Consultores
Postado

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

 

 

  • Consultores
Postado

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

 

 

  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

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
  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

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