Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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.

Postado

@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));

 

 

Postado

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

  • Consultores
Postado

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

Postado

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

  • 3 semanas depois ...
  • Consultores
Postado

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

Postado

Bom dia, @Italo Jurisato Junior!

1 hora atrás, Italo Jurisato Junior disse:

Favor atualizar os fontes e faça novos testes.

Estou atualizando a ACBr e modificando o código de preenchimento dos registros.

Assim que eu terminar os testes te informo.

[]s,

Mário Soares Santos

Postado (editado)

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

Editado por MSS
  • Este tópico foi criado há 2382 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.