Ir para conteúdo
  • Cadastre-se

dev botao

Tiplan Retorno da ConsultaNFSePorRPS


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

Recommended Posts

  • Membros Pro

Ao usar a ConsultaNFSePorRPS usando o provedor Tiplan tive algumas dificuldades para obter o retorno, mesmo passando os parâmetros corretamente a função não retornava os valores nas propriedades. Fiz algumas analises e descobri que no fonte pcnLeitor tem a função "TLeitor.rExtrai" que dentro dela é passada em uma variável FArquivo com o XML em string, porém o XML vem com string '$lt;' que equivale a '<', mas no código a comparação é feita com '<' e assim ele não traz o retorno para as propriedades do componente, pois ele não encontra o sinal de menor '<'. O mesmo acontece para o sinal de maior '>' que equivale a string '$gt;' na variável de retorno. Fiz uma logica usando StringReplace para sanar o problema paliativamente. Se houver algum tipo de correção quanto a isso estarei no aguardo. Disponibilizarei a função alterada abaixo.

OBS: Estou usando a cidade de Americana e também estou com os fontes atualizados.

function TLeitor.rExtrai(const nivel: integer; const TagInicio: string; TagFim: string = ''; const item: integer = 1): AnsiString;
var
  Texto: AnsiString;
  i,j: integer;
begin
  //NOTA: Extrai um grupo de dentro do nivel informado
  FArquivo := StringReplace(FArquivo,'&lt;','<',[rfReplaceAll]);
  FArquivo := StringReplace(FArquivo,'&gt;','>',[rfReplaceAll]);
  FNivel.strings[0] := FArquivo;

  if Trim(TagFim) = '' then
    TagFim := TagInicio;
  Texto := FNivel.Strings[nivel - 1];
  Result := '';
  FGrupo := '';
  for i := 1 to item do
    if i < item then
      Texto := copy(Texto, pos('</' + Trim(TagFim) + '>', Texto) + length(Trim(TagFim)) + 3, maxInt);

  j := pos('</' + Trim(TagFim) + '>', Texto);
  if j = 0 then
    j := pos('</' + Trim(TagFim) + ':', Texto); // Correção para WebServices do Ceará/MG

  //Correção para leitura de tags em que a primeira é diferente da segunda Ex: <infProt id=XXX> e a segunda apenas <infProt>
//  Texto := copy(Texto, 1, pos('</' + Trim(TagFim) + '>', Texto) + length(Trim(TagFim)) + 3);
  Texto := copy(Texto, 1, j + length(Trim(TagFim)) + 3);

  i := pos('<' + Trim(TagInicio) + '>', Texto);
  if i = 0 then
    i := pos('<' + Trim(TagInicio) + ' ', Texto);
  if i = 0 then
    i := pos('<' + Trim(TagInicio) + ':', Texto); //correção para webservice do Ceará
  if i = 0 then
    exit;
  Texto := copy(Texto, i, maxInt);

  // Alterado por Claudemir em 13/03/2013: j:=pos('</' + Trim(TagFim) + '>',Texto);
//  j:=pos('</' + Trim(TagFim) + '>', Texto) + length(Trim(TagFim)) + 3;
  j:=pos('</' + Trim(TagFim) + '>', Texto);

  if j=0 then
   j:=pos('</' + Trim(TagFim) + ':', Texto); //correção para webservice do Ceará

//  Result := TrimRight(copy(Texto, 1, j - 1));
  Result := TrimRight(copy(Texto, 1, j - 1 + (length(Trim(TagFim)) + 3)));
  FNivel.strings[nivel] := Result;
  FGrupo := result;
end;

Att,

Marcos Duca

Essystem

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Bom dia Marcos,

Fiz uma alteração no componente esta semana a fim de resolver esse problema.

Alguns provedores ao retornarem, uma parte desse retorno vem, vamos dizer em formato string e não em XML.

Detectei esse problema em outro provedor, em vez de resolver esse problema no rExtrai e como isso só foi detectado na NFS-e fiz uma alteração no ACBrNFSeWebServices.

Por favor desfaça o que você fez, atualiza os fontes e teste novamente.

  • 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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
Em 11/03/2016 at 09:55, Italo Jurisato Junior disse:

Bom dia Marcos,

Fiz uma alteração no componente esta semana a fim de resolver esse problema.

Alguns provedores ao retornarem, uma parte desse retorno vem, vamos dizer em formato string e não em XML.

Detectei esse problema em outro provedor, em vez de resolver esse problema no rExtrai e como isso só foi detectado na NFS-e fiz uma alteração no ACBrNFSeWebServices.

Por favor desfaça o que você fez, atualiza os fontes e teste novamente.

Obrigado Italo, fiz o que você disse e funcionou normalmente. O post pode ser fechado.

att,

Marcos Duca

ESSystem

Link para o comentário
Compartilhar em outros sites

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