Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2381 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde.

Já tenho desenvolvido o XML do evento S-1000 e gostaria de usar o componente para assinar e enviar.

Montei o codigo, só para testes, desta forma:

  ACBreSocial1.SSL.SelecionarCertificado;
  ACBreSocial1.Configuracoes.Arquivos.PathSalvar := gsAppPath + 'XML';
  ACBreSocial1.Configuracoes.Arquivos.PathSchemas := gsAppPath + 'Schemas\eSocial\v2_04_02';

  ACBreSocial1.Eventos.LoadFromFile('c:\1.xml');
  ACBreSocial1.AssinarEventos;
  ACBreSocial1.Eventos.SaveToFiles;

Meu componente esta configurado com os certificados assim:

image.png.7ef8a18038f21a1b938cb0374f961682.png

Mesmo mexendo nestas configurações dá o mesmo erro.

Após o ACBresocial1.AssinarEventos acontece o erro abaixo:

image.png.d6118d273a9345985dcbf03c954b0ee9.png

Analisando aparentemente esta faltando informação na tag cpfCtt porém antes do AssinarEventos esta tag como as demais estavam informadas, após o AssinarEventos as tag estão vazias, como se tive sobreposto o arquivo incompleto.

XML antes do AssinarEventos

image.thumb.png.8c9885c22ec4d532b60363503a36461b.png

XML depois do AssinarEventos

image.thumb.png.3494fe3cfa3ec1a49d5e8b70f27f4a9d.png

Alguma sugestão ?

image.png

Postado (editado)

Boa tarde, esse erro é relativo a validação com o schema, vc tem dois campos que são obrigatórios e que estão vazios no teu XML, inclusive existem outros erros, em um dos XML está com a versão 2.4.02 e outro 2.4.01 campos com valores diferentes...

image.png.af1dc400fe02522d51ff1099a030e6f4.png

Editado por Joceandro Perin
Postado
16 horas atrás, Joceandro Perin disse:

Boa tarde, esse erro é relativo a validação com o schema, vc tem dois campos que são obrigatórios e que estão vazios no teu XML, inclusive existem outros erros, em um dos XML está com a versão 2.4.02 e outro 2.4.01 campos com valores diferentes...

image.png.af1dc400fe02522d51ff1099a030e6f4.png

Joceandro, bom dia.

O problema é este, o arquivo antes da assinatura esta todo completo, depois de assinado fica assim.

16 horas atrás, Italo Jurisato Junior disse:

Boa tarde emarcolongo,

O XML foi gerado pelo componente ACBreSocial?

Ou você esta usando o componente apenas para assinar o XML gerado por uma rotina própria sua?

Italo, bom dia.

O XML não foi gerado pelo componente. Estou usando o componente apenas para assinar.

  • Consultores
Postado

Bom dia emarcolongo,

Porque você não utiliza o componente para tudo?

O grande problema é que o componente ACBreSocial não possui uma procedure que alimenta os campos de um evento através da leitura de um XML.

Ao carregar o XML através do método LoadFromFile pressupõe que o mesmo já esteja assinado, bastando apenas ser incluído no lote para ser enviado.

Sendo assim o meu conselho é: ou você utiliza o componente para todas as etapas ou em vez de gerar o XML, gere um arquivo texto no formato INI (na pasta: ...\Exemplos\ACBrDFe\ACBreSocial\ArqINI temos um arquivo INI de exemplo para cada evento), ao carregar esse arquivo o componente se encarrega de gerar e assinar o XML, deixando-o pronto para o envio.

Você pode testar esse recurso através do programa exemplo.

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

Prezado Italo,

Quando clico no botão continuar aparece a seguinte mensagem:

Falha na validação dos dados do evento: evtInfoEmpregador

erro: Schema invalido

ps: baixei todos os schemas do site do eSocial para uma pasta e na execução do exemplo aponto para essa pasta

  • Membros Pro
Postado

Prezado Italo,

Executei novamente e deu o mesmo erro.

Estou importando o arquivo ini do S-1000 do exemplo.

Está apresentando o mesmo erro.

Tem algum outro lugar para configurar a versão além do combo  Versão Ducumento Fiscal?

Atenciosamente

Rogerio Barbosa

  • Consultores
Postado

Rogério,

Abra o arquivo de configuração do programa exemplo: ExemploEsocial.ini e veja como esta o campo PathSchemas.

O meu esta assim:

PathSchemas=C:\ACBr\trunk2\Exemplos\ACBrDFe\Schemas\eSocial\v2_04_02
 

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

  • Consultores
Postado

Bom dia Rogério,

Acabei de fazer um teste com o programa exemplo do ACBreSocial, configurado para a versão 2.04.02

Mandei carregar o arquivo INI do evento 1000 que consta na pasta: ...\Exemplos\ACBrDFe\ACBreSocial\ArqINI, ao realizar a assinatura ocorreu o erro de não ter encontrado o nó, cliquei no botão continuar, o XML foi validado sem nenhum problema, depois cliquei no botão Enviar e o evento foi enviado também sem nenhum problema.

Alguma coisa esta errada na sua configuração, ou esta faltando esquemas dentro da pasta: C:\ACBr\Exemplos\ACBrDFe\Schemas\eSocial\v2_04_02

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

Postado
18 horas atrás, Rogerio Barbosa Ferreira disse:

Italo, 

Consegui enviar com sucesso.

Tive que retirar do exemplo algumas tags que não são obrigatórias.

  

Rogerio, bom dia.

 

Quais foram as tags que vc tirou ? poderia passar o exemplo modificado ?

Grato

  • Membros Pro
Postado

Emarcolongo, Bom dia.

Verifique que no exemplo do eSocial, na unit pcesS1000 a function TevtInfoEmpregador.LerArqIni esta gravaando todas as tags do leiaute.

function TevtInfoEmpregador.LerArqIni(const AIniString: String): Boolean;
var
  INIRec: TMemIniFile;
  Ok: Boolean;
  sSecao, sFim: String;
  I: Integer;
begin
  Result := False;

  INIRec := TMemIniFile.Create('');
  try
    LerIniArquivoOuString(AIniString, INIRec);

    with Self do
    begin
      sSecao := 'evtInfoEmpregador';
      Id             := INIRec.ReadString(sSecao, 'Id', '');
      Sequencial     := INIRec.ReadInteger(sSecao, 'Sequencial', 0);
      ModoLancamento := eSStrToModoLancamento(Ok, INIRec.ReadString(sSecao, 'ModoLancamento', 'inclusao'));

      sSecao := 'ideEvento';
      ideEvento.TpAmb   := eSStrTotpAmb(Ok, INIRec.ReadString(sSecao, 'tpAmb', '1'));
      ideEvento.ProcEmi := eSStrToProcEmi(Ok, INIRec.ReadString(sSecao, 'procEmi', '1'));
      ideEvento.VerProc := INIRec.ReadString(sSecao, 'verProc', EmptyStr);

      sSecao := 'ideEmpregador';
      ideEmpregador.OrgaoPublico := (TACBreSocial(FACBreSocial).Configuracoes.Geral.TipoEmpregador = teOrgaoPublico);
      ideEmpregador.TpInsc       := eSStrToTpInscricao(Ok, INIRec.ReadString(sSecao, 'tpInsc', '1'));
      ideEmpregador.NrInsc       := INIRec.ReadString(sSecao, 'nrInsc', EmptyStr);

      sSecao := 'idePeriodo';
      infoEmpregador.idePeriodo.IniValid := INIRec.ReadString(sSecao, 'iniValid', EmptyStr);
  //    infoEmpregador.idePeriodo.FimValid := INIRec.ReadString(sSecao, 'fimValid', EmptyStr);

      if (ModoLancamento <> mlExclusao) then
      begin
        sSecao := 'infoCadastro';
        infoEmpregador.infoCadastro.NmRazao          := INIRec.ReadString(sSecao, 'nmRazao', EmptyStr);
        infoEmpregador.infoCadastro.ClassTrib        := StrTotpClassTrib(Ok, INIRec.ReadString(sSecao, 'classTrib', '00'));
        infoEmpregador.infoCadastro.NatJurid         := INIRec.ReadString(sSecao, 'natJurid', EmptyStr);
        infoEmpregador.infoCadastro.IndCoop          := eSStrToIndCooperativa(Ok, INIRec.ReadString(sSecao, 'indCoop', '0'));
        infoEmpregador.infoCadastro.IndConstr        := eSStrToIndConstrutora(Ok, INIRec.ReadString(sSecao, 'indConstr', '0'));
        infoEmpregador.infoCadastro.IndDesFolha      := eSStrToIndDesFolha(Ok, INIRec.ReadString(sSecao, 'indDesFolha', '0'));
        infoEmpregador.infoCadastro.IndOptRegEletron := eSStrToIndOptRegEletronico(Ok, INIRec.ReadString(sSecao, 'indOptRegEletron', '0'));
        infoEmpregador.infoCadastro.IndEntEd         := eSStrToSimNao(Ok, INIRec.ReadString(sSecao, 'indEntEd', 'S'));
        infoEmpregador.infoCadastro.IndEtt           := eSStrToSimNao(Ok, INIRec.ReadString(sSecao, 'indEtt', 'S'));
        infoEmpregador.infoCadastro.nrRegEtt         := INIRec.ReadString(sSecao, 'nrRegEtt', EmptyStr);


   {  retirei daqui 
        sSecao := 'dadosIsencao';
        infoEmpregador.infoCadastro.DadosIsencao.IdeMinLei    := INIRec.ReadString(sSecao, 'ideMinLei', EmptyStr);
        infoEmpregador.infoCadastro.DadosIsencao.nrCertif     := INIRec.ReadString(sSecao, 'nrCertif', EmptyStr);
        infoEmpregador.infoCadastro.DadosIsencao.dtEmisCertif := StringToDateTime(INIRec.ReadString(sSecao, 'dtEmisCertif', '0'));
        infoEmpregador.infoCadastro.DadosIsencao.dtVencCertif := StringToDateTime(INIRec.ReadString(sSecao, 'dtVencCertif', '0'));
        infoEmpregador.infoCadastro.DadosIsencao.nrProtRenov  := INIRec.ReadString(sSecao, 'nrProtRenov', EmptyStr);
        infoEmpregador.infoCadastro.DadosIsencao.dtProtRenov  := StringToDateTime(INIRec.ReadString(sSecao, 'dtProtRenov', '0'));
        infoEmpregador.infoCadastro.DadosIsencao.dtDou        := StringToDateTime(INIRec.ReadString(sSecao, 'dtDou', '0'));
        infoEmpregador.infoCadastro.DadosIsencao.pagDou       := INIRec.ReadString(sSecao, 'pagDou', EmptyStr);
    }  até aqui


        sSecao := 'contato';
        infoEmpregador.infoCadastro.Contato.NmCtt    := INIRec.ReadString(sSecao, 'nmCtt', EmptyStr);
        infoEmpregador.infoCadastro.Contato.cpfCtt   := INIRec.ReadString(sSecao, 'cpfCtt', EmptyStr);
        infoEmpregador.infoCadastro.Contato.foneFixo := INIRec.ReadString(sSecao, 'foneFixo', EmptyStr);
        infoEmpregador.infoCadastro.Contato.foneCel  := INIRec.ReadString(sSecao, 'foneCel', EmptyStr);
        infoEmpregador.infoCadastro.Contato.email    := INIRec.ReadString(sSecao, 'email', EmptyStr);


    { retirei daqui
        sSecao := 'infoOP';
        infoEmpregador.infoCadastro.InfoOp.nrSiafi := INIRec.ReadString(sSecao, 'nrSiafi', EmptyStr);

        sSecao := 'infoEFR';
        infoEmpregador.infoCadastro.InfoOp.infoEFR.ideEFR  := eSStrToSimNao(Ok, INIRec.ReadString(sSecao, 'ideEFR', 'S'));
        infoEmpregador.infoCadastro.InfoOp.infoEFR.cnpjEFR := INIRec.ReadString(sSecao, 'cnpjEFR', EmptyStr);

        sSecao := 'infoEnte';
        infoEmpregador.infoCadastro.InfoOp.infoEnte.nmEnte    := INIRec.ReadString(sSecao, 'nmEnte', EmptyStr);
        infoEmpregador.infoCadastro.InfoOp.infoEnte.uf        := eSStrTouf(Ok, INIRec.ReadString(sSecao, 'uf', 'SP'));
        infoEmpregador.infoCadastro.InfoOp.infoEnte.codMunic  := INIRec.ReadInteger(sSecao, 'codMunic', 0);
        infoEmpregador.infoCadastro.InfoOp.infoEnte.indRPPS   := eSStrToSimNao(Ok, INIRec.ReadString(sSecao, 'indRPPS', 'S'));
        infoEmpregador.infoCadastro.InfoOp.infoEnte.subteto   := eSStrToIdeSubteto(Ok, INIRec.ReadString(sSecao, 'subteto', '1'));
        infoEmpregador.infoCadastro.InfoOp.infoEnte.vrSubteto := StringToFloatDef(INIRec.ReadString(sSecao, 'vrSubteto', ''), 0);

        sSecao := 'infoOrgInternacional';
        infoEmpregador.infoCadastro.InfoOrgInternacional.IndAcordoIsenMulta := eSStrToIndAcordoIsencaoMulta(Ok, INIRec.ReadString(sSecao, 'indAcordoIsenMulta', '0'));

    } até aqui

        I := 1;
        while true do
        begin
          // de 01 até 99
          sSecao := 'softwareHouse' + IntToStrZero(I, 2);
          sFim   := INIRec.ReadString(sSecao, 'cnpjSoftHouse', 'FIM');

          if (sFim = 'FIM') or (Length(sFim) <= 0) then
            break;

          with infoEmpregador.infoCadastro.SoftwareHouse.Add do
          begin
            CnpjSoftHouse := sFim;
            nmRazao       := INIRec.ReadString(sSecao, 'nmRazao', '');
            nmCont        := INIRec.ReadString(sSecao, 'nmCont', '');
            telefone      := INIRec.ReadString(sSecao, 'telefone', '');
            email         := INIRec.ReadString(sSecao, 'email', '');
          end;

          Inc(I);
        end;

        sSecao := 'infoComplementares';
        infoEmpregador.infoCadastro.InfoComplementares.SituacaoPJ.IndSitPJ := eSStrToIndSitPJ(Ok, INIRec.ReadString(sSecao, 'indSitPJ', '0'));
        infoEmpregador.infoCadastro.InfoComplementares.SituacaoPF.IndSitPF := eSStrToTpIndSitPF(Ok, INIRec.ReadString(sSecao, 'indSitPF', '0'));

        if ModoLancamento = mlAlteracao then
        begin
          sSecao := 'novaValidade';
          infoEmpregador.novaValidade.IniValid := INIRec.ReadString(sSecao, 'iniValid', EmptyStr);
          infoEmpregador.novaValidade.FimValid := INIRec.ReadString(sSecao, 'fimValid', EmptyStr);
        end;
      end;
    end;

    GerarXML;

    Result := True;
  finally
     INIRec.Free;
  end;
end;


Também retire do aquivo .ini que vc está importando essas mesmas tags

 

Emarcolongo,

retirei porque a empresa não necessita das mesmas

No seu caso vc deve analisar se precisa das tags ou não

  • Membros Pro
Postado

Italo, bom dia,

Eu fiz só para teste. Vou tentar fazer o que vc mencionou.

Estou querendo criar uma outra aba para colocar nela um listview dos arquivos .ini gerados e gerar todos dentro de um lote.

No ACBrNFe consegui fazer. Vou tentar fazer o mesmo no eSocial

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