Jump to content

dev botao

eSocial - Orgãos Públicos


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

Recommended Posts

A geração da chave eSocial (function GerarChaveEsocial) e a geração da tag <nrInsc> (procedure GerarIdeEmpregador) não estavam atendendo as especificações do documento  "Leiautes do eSocial v2.4.02"; quando o empregador é "Orgão Público"; fazendo-se necessário algumas modificações no código fonte das units mencionadas a seguir:

ACBreSocialConfiguracoes.pas
Adição da propriedade NaturezaJuridica na classe TGeralConfeSocial e tratamento nos metodos Assign, GravarIni e LerIni.

pcesGerador.pas
Alteração da function GerarChaveEsocial e da procedure GerarIdeEmpregador  para geração do ID e nrInsc corretos quando empregador for Orgão Público.

ACBreSocial-change-log.txt

OBS: As alterações foram realizadas usando-se como base a versão trunk2, revisão 15056, de 29/04/2018, da ACBr.

Link to comment
Share on other sites

@MSS eu tenho certeza que isso já foi feito no código.

GerarChaveEsocial

if TACBreSocial(FACBreSocial).Configuracoes.Geral.TipoEmpregador in [teOrgaoPublico, tePessoaFisica] then
  Result := Result + copy(OnlyNumber(CNPJF) + '00000000000000', 1, 14)
else
  Result := Result + copy(OnlyNumber(Copy(CNPJF, 1, 8)) + '00000000000000', 1, 14);

GerarIdeEmpregador

if (TACBreSocial(FACBreSocial).Configuracoes.Geral.TipoEmpregador in [teOrgaoPublico, tePessoaFisica]) then
  Gerador.wCampo(tcStr, '', 'nrInsc', 14, 14, 1, pEmp.NrInsc)
else
  Gerador.wCampo(tcStr, '', 'nrInsc', 8, 8, 1, Copy(pEmp.NrInsc, 1, 8));

 

 

Link to comment
Share on other sites

Olá, Rafael!

Em 30/04/2018 at 20:29, Rafael Dias disse:

@MSS eu tenho certeza que isso já foi feito no código.

GerarChaveEsocial


if TACBreSocial(FACBreSocial).Configuracoes.Geral.TipoEmpregador in [teOrgaoPublico, tePessoaFisica] then
  Result := Result + copy(OnlyNumber(CNPJF) + '00000000000000', 1, 14)
else
  Result := Result + copy(OnlyNumber(Copy(CNPJF, 1, 8)) + '00000000000000', 1, 14);

GerarIdeEmpregador


if (TACBreSocial(FACBreSocial).Configuracoes.Geral.TipoEmpregador in [teOrgaoPublico, tePessoaFisica]) then
  Gerador.wCampo(tcStr, '', 'nrInsc', 14, 14, 1, pEmp.NrInsc)
else
  Gerador.wCampo(tcStr, '', 'nrInsc', 8, 8, 1, Copy(pEmp.NrInsc, 1, 8));

 

As partes de código mencionadas acima não atendem as regras especificadas, por isso, adicionei a propriedade NaturezaJuridica na classe de Configurações.Geral e alterei  o código para o abaixo:

if (TACBreSocial(FACBreSocial).Configuracoes.Geral.TipoEmpregador = tePessoaFisica) or
     ((TACBreSocial(FACBreSocial).Configuracoes.Geral.TipoEmpregador = teOrgaoPublico) and
      (IndexText(TACBreSocial(FACBreSocial).Configuracoes.Geral.NaturezaJuridica, ['1015', '1040', '1074', '1163']) >= 0)) then // Natureza jurídica de administração pública direta federal
    Result := Result + copy(OnlyNumber(CNPJF) + '00000000000000', 1, 14)
  else
    Result := Result + copy(OnlyNumber(Copy(CNPJF, 1, 8)) + '00000000000000', 1, 14);

Os 14 caracteres do CNPJF, somente são utilizados quando o tipo do empregador for Pessoa Fisica ou Orgão Público cuja Natureza Juridica seja Administração Pública Direta Federal [101-5], [104-0], [107-4] ou [116-3], a negativa dessas condições obrigam que sejam informados apenas os 8 primeiros caracteres do CNPJF.

[]s.

Mário Soares Santos

Link to comment
Share on other sites

  • Consultores

Bom dia Mário,

Segundo o manual do e-Social versão 2.04.02 - página 5 na coluna Descrição do campo nrInsc temos:

 Se for um CNPJ deve ser informada apenas a Raiz/Base de oito posições, exceto se natureza jurídica de administração pública direta federal ([101-5], [104-0], [107-4], [116-3], situação em que o campo deve ser preenchido com o CNPJ completo (14 posições).

Pergunto, se for uma administração pública estadual ou municipal devemos informar somente as 8 primeiras posições do CNPJ, correto?

Existem outras naturezas jurídicas de administração publica direta federal além das 4 mencionadas?

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 to comment
Share on other sites

Bom dia, Italo !

3 minutos atrás, Italo Jurisato Junior disse:

Pergunto, se for uma administração pública estadual ou municipal devemos informar somente as 8 primeiras posições do CNPJ, correto? 

Correto. Ou as administrações públicas federais que não se enquadrem nas 4 naturezas juridicas especificadas.

5 minutos atrás, Italo Jurisato Junior disse:

Existem outras naturezas jurídicas de administração publica direta federal além das 4 mencionadas?

Existem sim, mas para essas vale a regra das oito posições do CNPJ.

[]s

Mário Soares Santos

Link to comment
Share on other sites

  • 3 weeks later...
  • Consultores

Bom dia Mário,

Em vez de criar uma nova propriedade de configuração, fiz diferente criei novos tipos de enumeradores (em negrito) conforme abaixo:

  TEmpregador = (tePessoaJuridica, teOrgaoPublico, tePessoaFisica,
                 teOrgaoPublicoExecutivoFederal, teOrgaoPublicoLegislativoFederal,
                 teOrgaoPublicoJudiciarioFederal, teOrgaoPublicoAutonomoFederal
);

E modifiquei a função que gera a chave conforme abaixo:

    if Configuracoes.Geral.TipoEmpregador in [tePessoaFisica,
               teOrgaoPublicoExecutivoFederal, teOrgaoPublicoLegislativoFederal,
               teOrgaoPublicoJudiciarioFederal, teOrgaoPublicoAutonomoFederal] then
      Result := Result + copy(OnlyNumber(CNPJF) + '00000000000000', 1, 14)
    else
      Result := Result + copy(OnlyNumber(Copy(CNPJF, 1, 8)) + '00000000000000', 1, 14);

Desta forma utilizado todos os dígitos do CNPJ/CPF se o tipo de empregador for uma Pessoa Física ou Orgão Publico do Poder Executivo/Legislativo/Judiciário/Autônomo Federal.

Nos demais casos será utilizado somente os 8 primeiros caracteres do CNPJ.

Favor atualizar os fontes e faça novos testes.

 

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 to comment
Share on other sites

Boa Tarde, @Italo Jurisato Junior!

Testei a sua implementação e a mesma está correta (TeSocialEvento.GerarChaveEsocial), porem faltou aplicar o mesmo teste na procedure GerarIdeEmpregador, da unit pcesGerador.

Citar

procedure TeSocialEvento.GerarIdeEmpregador(pEmp: TIdeEmpregador);

-------

if (TACBreSocial(FACBreSocial).Configuracoes.Geral.TipoEmpregador in [tePessoaFisica,
                                                                        teOrgaoPublicoExecutivoFederal, teOrgaoPublicoLegislativoFederal,
                                                                        teOrgaoPublicoJudiciarioFederal, teOrgaoPublicoAutonomoFederal]) then

[]s,

Mário Soares Santos

Edited by MSS
Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.