Ir para conteúdo
  • Cadastre-se

dev botao

Svn Corrigir Retorno Consulta Lote


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

Recommended Posts

Fui mudado a maneira de retorno das msg e ocorrência no componente.

 

Não esta retornado os valores nas propriedades correspondente de Envio e Retorno.

 

No exemplo Acbr, foi simplesmente comentado os retorno.

Agora o componente não funciona, pois não temos os retornos.

 

o Exemplo acbr esta assim todos os retornos comentados,

so retorno o xml, as propriedades do componente não são preenchidas.

 

ps. vou ter que passar a fazer backup do esocial antes de atualizar os fontes, porque agora não tenho como gerar mais o esocial.

 

MemoResp.Lines.Text := ACBreSocial1.WebServices.ConsultaLote.RetWS;
    (*
    with MemoDados.Lines do
    begin
      Add('');
      Add('Código Retorno: ' +
        IntToStr(ACBreSocial1.WebServices.ConsultaLote.RetProcLote.Status));
      Add('Mensagem: ' + ACBreSocial1.WebServices.ConsultaLote.RetProcLote.
        Descricao);
      if ACBreSocial1.WebServices.ConsultaLote.RetProcLote.Status in ([201, 202])
      then
      begin
        Add('ideEmpregador');
        Add(' - TpInsc: ' +
          IntToStr(ord(ACBreSocial1.WebServices.ConsultaLote.RetProcLote.
          IdeEmpregador.TpInsc)));
        Add(' - NrInsc: ' + ACBreSocial1.WebServices.ConsultaLote.RetProcLote.
          IdeEmpregador.NrInsc);
        Add('ideTransmissor');
        Add(' - TpInsc: ' + eSTpInscricaoToStr(
          ACBreSocial1.WebServices.ConsultaLote.RetProcLote.IdeTransmissor.TpInsc));
        Add(' - NrInsc: ' + ACBreSocial1.WebServices.ConsultaLote.RetProcLote.
          IdeTransmissor.NrInsc);
        Add('dadosRecepcaoLote');
        Add(' - dhRecepcao: ' + DateTimeToStr
          (ACBreSocial1.WebServices.ConsultaLote.RetProcLote.dadosRecLote.
          dhRecepcao));
        Add(' - versaoAplicativoRecepcao: ' +
          ACBreSocial1.WebServices.ConsultaLote.RetProcLote.dadosRecLote.
          versaoAplicRecepcao);
        Add(' - protocoloEnvio: ' + ACBreSocial1.WebServices.ConsultaLote.
          RetProcLote.dadosRecLote.Protocolo);

        for Index := 0 to ACBreSocial1.WebServices.ConsultaLote.RetProcLote.
          retEventos.Count - 1 do
        begin
          retEvento := ACBreSocial1.WebServices.ConsultaLote.RetProcLote.
            retEventos.Items[Index];
          if retEvento.Processamento.cdResposta <> EmptyStr then
          begin
            Add('Processamento');
            Add(' - cdResposta: ' + retEvento.Processamento.cdResposta);
            Add(' - descResposta: ' + retEvento.Processamento.descResposta);
            Add(' - versaoAplicProcLote: ' +
              retEvento.Processamento.versaoAplicProcLote);
            Add(' - dhProcessamento: ' +
              DateTimeToStr(retEvento.Processamento.dhProcessamento));
            Add('Recibo');
            Add(' - nrRecibo: ' + retEvento.Recibo.FnrRecibo);
            Add(' - hash: ' + retEvento.Recibo.Fhash);
          end;
          if retEvento.Processamento.Ocorrencias.Count > 0 then
          begin
            Add('Ocorrencias');
            for J := 0 to retEvento.Processamento.Ocorrencias.Count - 1 do
            begin
              Add(' Ocorrencia ' + IntToStr(J));
              Add('   Código:' +
                IntToStr(retEvento.Processamento.Ocorrencias.Items[J].Codigo));
              Add('   Descrição: ' + retEvento.Processamento.Ocorrencias.Items
                [J].Descricao);
              Add('   Tipo: ' +
                IntToStr(retEvento.Processamento.Ocorrencias.Items[J].Tipo));
              Add('   Localização:' + retEvento.Processamento.Ocorrencias.Items
                [J].Localizacao);
            end;
          end;
        end;
      end
      else
      begin
        for Index := 0 to ACBreSocial1.WebServices.ConsultaLote.RetProcLote.
          retEventos.Count - 1 do
        begin
          retEvento := ACBreSocial1.WebServices.ConsultaLote.RetProcLote.
            retEventos.Items[Index];
          Add('Ocorrencias');
          for J := 0 to retEvento.Processamento.Ocorrencias.Count - 1 do
          begin
            Add(' Ocorrencia ' + IntToStr(J));
            Add('   Código:' +
              IntToStr(retEvento.Processamento.Ocorrencias.Items[J].Codigo));
            Add('   Descrição: ' + retEvento.Processamento.Ocorrencias.Items[J]
              .Descricao);
            Add('   Tipo: ' + IntToStr(retEvento.Processamento.Ocorrencias.Items
              [J].Tipo));
            Add('   Localização:' + retEvento.Processamento.Ocorrencias.Items[J]
              .Localizacao);
          end;
        end;
      end;
    end;
    *)

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

  • Consultores

Bom dia Edmar,

Por favor faça um backup e atualiza os fontes e faça novos testes com o programa exemplo, tanto de envio do lote quanto de consulta.

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

na unit pcesRetConsultaLote

quando a retorno com ocorrencias da um erro.

 

 RetEventos.Add;
          RetEventos.Items.IDEvento := FLeitor.rAtributo('Id=', 'evento');

  ate aqui funciona.

quando vai adicionar qualquer evento da erro, creio que o item "TRetEventosCollectionItem"

se tentar acessar qualquer propriedade de "TRetEventosCollectionItem" da erro.

 

          if leitor.rExtrai(4, 'recepcao') <> '' then
          begin
          {  RetEventos.Items.Recepcao.tpAmb               := eSStrTotpAmb(Ok, Leitor.rCampo(tcStr, 'tpAmb'));
            RetEventos.Items.Recepcao.dhRecepcao          := Leitor.rCampo(tcDatHor, 'dhRecepcao', '');
            RetEventos.Items.Recepcao.versaoAplicRecepcao := Leitor.rCampo(tcStr, 'versaoAppRecepcao');
            RetEventos.Items.Recepcao.Protocolo           := Leitor.rCampo(tcStr, 'protocoloEnvioLote');
            }
          end;

 

erro.png

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Edmar,

Você poderia anexar o XML de retorno referente a consulta?

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

esta unit da erro na leitura do retorno também

erro apartir da linha

 RetEventos.Items.evtDupl :=
            StrToBool(FLeitor.rAtributo('evtDupl=', 'evento'));

          if Leitor.rExtrai(4, 'retornoEvento') <> '' then

 

e não pega os protocolos ( veja exemplo acima de xml de retorno)

Link para o comentário
Compartilhar em outros sites

se mudar na unit  

de:

 if Leitor.rExtrai(5, 'eSocial') <> '' then

para

if Leitor.rExtrai(4, 'eSocial') <> '' then

passar a ler a tab

mas ainda da erro ,

RetEventos.Items.Recepcao ( todos)

RetEventos.Items.Processamento(todos)

 RetEventos.Items.Recibo.nrRecibo(todos)

todos estão com nil, acho que a classe não foi declarada(não tenho certeza)

Link para o comentário
Compartilhar em outros sites

O erro está exatamente onde o Edmar disse...

RetEventos.Items.evtDupl := StrToBool(FLeitor.rAtributo('evtDupl=', 'evento'));

O leitor não encontra o "evtDupl" e aí a função tenta converter uma String '' p/ Boolean e da o erro.

Pelo que percebi, o XML de retorno não está vindo com a Tag evtDupl...embora no layout a ocorrência dele esteja 1, e não 0-1.

image.png.221f6b10eb0f6b27048ed4236696923a.png

E aí como da erro nessa linha, não está sendo executado o que está abaixo, que é onde iria atribuir os valores para Processamento, Recepcao e Recibo

 

Editado por Paulo Aguiar Junior
Link para o comentário
Compartilhar em outros sites

1 minuto atrás, EdmarFrazao disse:

mas o problema não e so esta.

todos os objetos abaixo desta não aceita ter informações é como se não tivessem sido definidos.

 

RetEventos.Items.Recepcao ( todos)

RetEventos.Items.Processamento(todos)

 RetEventos.Items.Recibo.nrRecibo(todos)

Esse problema eu corrigi, vou postar aqui p/ análise.

Agora o único problema está nos níveis do Leitor.Extrai.

O Extrai da forma que está não sei se vai dar certo, pois por exemplo, quando houver a tag Ocorrencias, o nível do Recibo será um, quando não houver, será outro.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Rafael Dias disse:

Na verdade a informação é ambígua ele diz que o atributo é obrigatório mais na descrição diz que só vem se for verdadeiro ou seja governo fazendo merda até na documentação.

Dá uma analisada nessa unit, está corrigido o problema dos access violation referente a Recepcao, Processamento e Recibo.

O problema era que não estava passando no TRetEventosCollectionItem.Create.

Agora precisamos acertar os erros dos níveis do Leitor.Extrai

pcesRetConsultaLote.pas

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

  • Consultores
  • Solution

Boa tarde pessoal,

Vou enviar para o repositório a correção da unit mais a atualização do programa exemplo, favor atuar e fazer novos testes.

Desde já muito obrigado.

  • Obrigado 2
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á 2362 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.