Ir para conteúdo
  • Cadastre-se

dev botao

S-1200 - Como carregar Arquivos Assinados Baixados no ESocial para o Componente


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

Recommended Posts

Postado

Estou com uma Dúvida, Eu tenho varios lotes de varias datas que foram feitos downloads Manualmente no portal do ESocial , e preciso alimentar minha base de dados com dados processados de anos anteriores.

EU estou Usando o Método ACBrESocial.LoadFromFile( umArquivoXMl1200 ), porém eu não consigo de nenhuma forma recuperar os valores, parece que nada é carregado no componente, debugando eu  cheguei na pcesGerador para o Laytou TeS1200 , Ele direciona para esse método 

 

procedure TeSocialEvento.SetXML(const Value: String);
var
  NomeEvento: String;
  Ok: Boolean;
  Leitor: TLeitor;
  typVersaoeSocial: TVersaoeSocial;
begin
  typVersaoeSocial := TACBreSocial(FACBreSocial).Configuracoes.Geral.VersaoDF;
  FXML             := Value;

  if not XmlEstaAssinado(FXML) then
  begin
    NomeEvento := TipoEventoToStrEvento(StringXMLToTipoEvento(Ok, FXML, typVersaoeSocial), typVersaoeSocial);
    FXML       := Assinar(FXML, NomeEvento);

    Leitor := TLeitor.Create;
    try
      Leitor.Grupo := FXML;
      Self.Id      := Leitor.rAtributo('Id=');
    finally
      Leitor.Free;
    end;

    Validar(TipoEventoToSchemaeSocial(StringXMLToTipoEvento(Ok, FXML, typVersaoeSocial), typVersaoeSocial));
  end;

end;

Essa Condição verifica se ele Está assinado     if not XmlEstaAssinado(FXML) then  , se não tiver ele aciona o leitor, Está correto isso, ou eu tenho que usar algum outro método para ler e carregar o componente ACBRESocial com um Arquivo s-1200.xml?

Postado (editado)

humm, Entao pelo que estou entendendo , antes de fazer um LoadFromFile(  ) eu tenho que setar manualmente a versão do Layout? , mas é estranho por que de qualquer forma ele vai sempre entrar nesse ponto da rotina que vai validar se Nao está assinado.. se tiver assinado ele  ignora o Leitor, será que cabe uma revisão ?

Aqui ele entra primeiro na pcesPeriodicos 

e analisa a versão xml e direciona para o type que representa o layout

 

function TPeriodicos.LoadFromString(const AXMLString: String): Boolean;
var
  Ok: Boolean;
  typVersaoDF : TVersaoeSocial;
begin
  typVersaoDF := TACBreSocial(Self.Owner).Configuracoes.Geral.VersaoDF;

  case StringXMLToTipoEvento(Ok, AXMLString, typVersaoDF) of
    teS1200: Self.S1200.New.EvtRemun.XML := AXMLString;
    teS1202: Self.S1202.New.EvtRmnRPPS.XML := AXMLString;
    teS1207: Self.S1207.New.EvtBenPrRP.XML := AXMLString;
    teS1210: Self.S1210.New.EvtPgtos.XML := AXMLString;
    teS1220: Self.S1220.New.EvtInfoIR.XML := AXMLString;
    teS1250: Self.S1250.New.EvtAqProd.XML := AXMLString;
    teS1260: Self.S1260.New.EvtComProd.XML := AXMLString;
    teS1270: Self.S1270.New.EvtContratAvNP.XML := AXMLString;
    teS1280: Self.S1280.New.EvtInfoComplPer.XML := AXMLString;
    teS1295: Self.S1295.New.EvtTotConting.XML := AXMLString;
    teS1298: Self.S1298.New.EvtReabreEvPer.XML := AXMLString;
    teS1299: Self.S1299.New.EvtFechaEvPer.XML := AXMLString;
    teS1300: Self.S1300.New.EvtContrSindPatr.XML := AXMLString;
  end;

  Result := (GetCount > 0);
end;

No Meu caso o tes1200 

 

Editado por carlosevania dias
  • Moderadores
Postado

acho que tu deveria conferir o log do svn para o componente, mas eu acho que foi capado a parte que tratava lá do começo do esocial pois omesmo não era mais aceito então se tu está a pegar xml antigo pra popular pode ser que não carregue

mas depura linha a linha e tu vai ver o que ele tá buscando

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado (editado)

Eu olhei aqui, e pude verificar, debugando linha a linha, que na verdade ele não popula nenhum Arquivo Processado tes1200 , cai sempre na mesma validação,

Se <não> estiver assinado façAssina
     Aciona a Classe de Leitor 
   Valida 
  termina



Não há um Desvio condicional para acionar o Leitor caso *Ja* esteje Assinado!

Na minha percepção ele deveria ter uma condicional
 

Se <não> estiver assinado faça 
   Assina
     Aciona a Classe de Leitor 
   Valida 

se sim <está assinado>
    Aciona a Classe de Leitor 
           popula Layout 
termina



mas não tem uma clausula para arquivos Ja com assinaturas existentes para popular o componente e a estrutura ts1200 , então , qualquer arquivo processado, baixado no portal do Social , não está sendo populado pelo Componente ACBR , independente de versão.

Testei inclusive no Exemplo do ACBR. 

Se eu der um LoadFromFile(  Arquivo S-1200.xml )  ele não popula a estrutura ts1200.


Acredito que ele não está populando nenhum Layout processado baixado do eSocial , Testei com outros Arquivos de processamento Periódicos.

Editado por Carlos Alberto Dias Filho
  • Consultores
  • Solution
Postado

Olá,

Efetuados testes com a rotina de importação de xmls (ACBreSocial1.Eventos.LoadFromFile) e os dados foram importados corretamente.
Verifique conforme trecho de código abaixo se é o que espera.

  for i := 0 to ACBreSocial1.Eventos.Periodicos.Count - 1 do
  begin
    if ACBreSocial1.Eventos.Periodicos.S1200.Count > 0 then
    begin
      MemoResp.Lines.Add('Tipo Evento.: ' + TipoEventoToStr(ACBreSocial1.Eventos.Periodicos.S1200.Items[i].TipoEvento));
    end;
  end;

Para que os eventos sejam adicionados em ACBreSocial1.Eventos.Gerados ao ler um xml, você deve habilitar a propriedade a seguir:
ACBreSocial1.Configuracoes.Arquivos.Salvar 

Com isso os poderá acessar os dados conforme o trecho a seguir.
Obs: Foi enviada uma correção ao SVN (Rev-34557) ao ler xmls assinados para interpretar o ID do xml para utilizá-lo e salvar os xmls lidos.

  for i := 0 to ACBreSocial1.Eventos.Gerados.Count - 1 do
  begin
    MemoResp.Lines.Add('Tipo Evento.: ' + TipoEventoToStr(ACBreSocial1.Eventos.Gerados.Items[i].TipoEvento));
    MemoResp.Lines.Add('Evento Salvo: ' + ACBreSocial1.Eventos.Gerados.Items[i].PathNome);
  end;

Por favor atualize os fontes, reinstale os componentes, verifique se o problema foi resolvido e, se possível, nos informe se foi o resultado esperado.
 

  • 2 semanas depois ...
  • Este tópico foi criado há 129 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...