Ir para conteúdo
  • Cadastre-se

dev botao

Curitiba: erro ao consultar notas? Na resposta estão todas as notas mas em ACBrNFSe.NotasFiscais.Count só tem uma.


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

Recommended Posts

  • Membros Pro
Postado (editado)

Investigando um pouco, na procedure TACBrNFSeProviderABRASFv1.TratarRetornoConsultaNFSe(Response: TNFSeConsultaNFSeResponse) temos:

      ANodeArray := ANode.Childrens.FindAllAnyNs('CompNfse');
      if ANodeArray = nil then
        ANodeArray := ANode.Childrens.FindAllAnyNs('ComplNfse');

      if not Assigned(ANodeArray) then
      begin
        AErro := Response.Erros.New;
        AErro.Codigo := Cod203;
        AErro.Descricao := Desc203;
        Exit;
      end;

      for I := Low(ANodeArray) to High(ANodeArray) do
      begin
        ANode := ANodeArray[I];

Pelo que entendi vai percorrer uma lista de tags CompNfse porém as notas estão dentro de tcCompNfse então o código só faz uma interação.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <ConsultarNfseResponse xmlns="http://www.e-governeapps2.com.br/">
            <ConsultarNfseResult>
                <ListaNfse>
                    <CompNfse>
                        <tcCompNfse>
                            <Nfse>
                                <InfNfse>
                                    <Numero>13943</Numero>
								</InfNfse>
							</Nfse>
						</tcCompNfse>
						<tcCompNfse>
							<Nfse>
								<InfNfse>
									<Numero>13944</Numero>

 

Editado por Digibyte
  • Consultores
Postado

Boa tarde,

No meu entendimento não é bem isso que ocorre.

Primeiramente o TratarRetornoConsultaNFSe verifica se existe o grupo: ListaNfse:

      ANode := Document.Root.Childrens.FindAnyNs('ListaNfse');

Depois verifica se existe o grupo CompNfse ou ComplNfse, como esse grupo pode ocorrer mais de uma vez a leitura do grupo é feita através do FindAllAnyNs:

      ANodeArray := ANode.Childrens.FindAllAnyNs('CompNfse');
      if ANodeArray = nil then
        ANodeArray := ANode.Childrens.FindAllAnyNs('ComplNfse');

Em seguida temos um loop que vai ler todas as ocorrências do grupo CompNfse ou ComplNfse

      for I := Low(ANodeArray) to High(ANodeArray) do
      begin
        ANode := ANodeArray[I];

Na variável ANode temos o nó de cada ocorrência.

Por fim ele verifica se existe ou não o grupo tcCompNfse para em seguida ler o grupo Nfse.

        AuxNode := ANode.Childrens.FindAnyNs('tcCompNfse');

        if AuxNode = nil then
          AuxNode := ANode.Childrens.FindAnyNs('Nfse')
        else
          AuxNode := AuxNode.Childrens.FindAnyNs('Nfse');

Você consegue debugar para ver o que pode esta ocorrendo?

  • Curtir 1
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

  • Membros Pro
Postado
Citar

Em seguida temos um loop que vai ler todas as ocorrências do grupo CompNfse ou ComplNfse

 

Eu debuguei, pra mim está errado. O loop tinha que ser em tcCompNfse não em CompNfse. A tag que se repete NÃO é a CompNfse. Te mandei o XML via msg privada.

  • Este tópico foi criado há 755 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.