Ir para conteúdo
  • Cadastre-se

dev botao

Svn Corrigir Retorno Consulta Lote


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

Recommended Posts

Postado

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
Postado

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

Postado

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)

Postado

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)

Postado (editado)

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
Postado

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)

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

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

ok  envio e retorno ok
protocolo
recibo
ocorrencias.
mensagems


Testes com os Eventos
S1000
S1005
S1010
S1020
S1030
S1050

Inclusive com o SEQUENCIAL implementado

Obrigado a todos pelo excelente trabalho.

  • Curtir 1
  • Obrigado 1
  • Este tópico foi criado há 2570 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...