# Módulo de Folha de Pagamento # Relatório de provisão de 13° salário Neste capítulo, se encontram as informações referentes ao relatório de provisão de 13° salário, desde a sua definição, parametrização e variáveis envolvidas. Este é um projeto piloto para documentação dos processos do sistema, por isso, seus documentos são considerados como documentos experimentais. # Definição do Processo ##### **Resumo do processo** O processo de geração do relatório de provisão de 13° salário, é um processo existente no sistema SSFolha, responsável por calcular e exibir, em forma de relatório, os valores de provisão de 13° salário para os funcionários. Do ponto de vista contábil, uma provisão é a consideração de um gasto tido como certo ou com grandes chances de ocorrência. Se tratando da provisão de 13° salário, uma vez que um colaborador trabalhou durante um período considerado como um avo, este colaborador já possui direito ao respectivo avo no pagamento do 13°. Embora o pagamento não ocorra no momento da completude do avo, ele vai ocorrer em algum momento posterior. O relatório de provisão tem o objetivo de exibir e detalhar estes valores para acompanhamento e verificação dos valores à serem provisionados. ##### **Envolvidos no processo** **Sistema:** SSFolha **Usuário:** Qualquer usuário com permissões para gerar relatórios de provisões ##### **Etapas do processo** - O Usuário deve navegar até a tela de provisões, através do menu:
Relatórios > Provisão > 13° Salário |
Cod | Nome | Salário | H. Extra | Valor Acum | INSS Func | INSS Empr | FGTS | IRRF | 13° mês |
1 | João da Silva | 1200,00 | 0,00 | 0,00 | 7,625 | ? | 8,00 | 0,00 | 100,00 |
Cod | Nome | Salário | H. Extra | Valor Acum | INSS Func | INSS Empr | FGTS | IRRF | 13° sal. |
1 | João da Silva | 1200,00 | 0,00 | 0,00 | 91,50 | ? | 96,00 | 0,00 | 1200,00 |
Cod | Nome | Salário | H. Extra | Valor Acum | INSS Func | INSS Empr | FGTS | IRRF | Dt. Admit | Dt. Ref | Avos | 13° prop. |
1 | João da Silva | 1200,00 | 0,00 | 0,00 | **X** | ? | 8 | 0 | DD/MM/AAAA | DD/MM/AAAA | **N** | **Y** |
Infos do Funcio | Período Prop. | Avos | Base 13° | 13° Acum. | 13° Mês | INSS Acum | INSS Mês | FGTS Acum | FGTS Mês |
Abstraídas | 01/01/AAAA - DD/MM/AAAA | **N** | 1200,00 | **X** | 100,00 | **Y** | 7,625 | **Z** | 8,00 |
**Na geração do XML, é necessário adicionar as tags de abertura e fechamento do grupo. Para maiores detalhes, verifique campos já implementados ou tire suas dúvidas com outro desenvolvedor.**
--- ##### **Inclusão de campo** Deve-se verificar em qual grupo o campo será adicionado ou se será em um grupo novo. Caso seja um novo grupo, seguir o procedimento de "**inclusão de grupo**".Verificar se há necessidade de criação de campos em telas existentes e se necessita de utilização das rotinas de preenchimento obrigatório e/ou demais validações.
- Incluir o campo na classe do evento (ou do grupo pertencente, caso o mesmo já exista): atributo na classe, property, get e set (eSocial.SXXXX.Classe.Pas); - Incluir preenchimento ao atributo criado (PreencheSXXXX.pas); - Incluir o campo criado para que seja escrito e exportado no XML, porém necessita atualização do componente do e-Social com o mapeamento dos campos (GeraSXXXX.pas);Verificar com a equipe da qualidade, caso surja necessidade de criação destes campos em novas telas, onde e como devem ser criados e suas respectivas validações, sobre os novos layout e adequações.
--- ##### **Inclusão ou remoção de valores possíveis** Normalmente, quando existem campos com um universo limitado de valores possíveis, existem arrays declarados na unit (eSocial\_Conversao) que são utilizados para atribuição dos atributos do evento no preenchimento e convertidos em string no momento da geração do XML. Alterações desse tipo envolvem alterações nos arrays de declaração dos itens e nos arrays utilizados para a conversão do indíce do item para uma string.Para situações onde não existam arrays já definidos, discuta com os outros desenvolvedores a melhor estratégia à ser seguida.
--- ##### **Exclusão de campo** - Remover o campo da classe (eSocial.SXXXX.Classe.Pas); - Remover a atribuição feita na unit responsável por preencher o objeto do evento (PreencheSXXXX.pas); - Remover a escrita no XML a partir do objeto criado na unit (GeraSXXXX.pas);Verificar tratamentos relacionados aos campos removidos do eSocial (Por exemplo, utilização da rotina: TeSocialFuncoes.AdvertePreenchimentoDoCampo ou validações na hora de salvar os cadastros relacionados).
**Antes de remover validações e obrigatoriedades de preenchimento, confirme com a equipe da qualidade.**
--- ##### **Exclusão de grupo** Quando houver exclusão de grupos, deve-se realizar o procedimento de **exclusão de campos** para todos os campos do grupo que será excluído. Além disso, na geração do XML do evento (GeraSXXXX.pas), as tags de abertura e fechamento do grupo devem ser excluídas. --- ##### **Alteração de ocorrência** Há dois tipos principais de alteração, tratando-se de ocorrência. A alteração de 1 para N ocorrências ou o contrário, de N ocorrências para 1 ocorrência. Em situações onde a ocorrência é alterada de 1 para N e o dado relativo ao campo se encontra em um cadastro, essa informação passará a compor um grid, sendo que possivelmente será necessária a criação de uma tabela para realizar a intermediação das informações. Caso essa informação não esteja incluída em um cadastro e já possua seu próprio cadastro, então provavelmente as alterações ocorrerão apenas na classe, preenchimento e geração do XML no respectivo evento (as alterações serão detalhadas logo abaixo). Em situação onde a ocorrência é alterada de N para 1, e o dado relativo ao campo se encontra em um cadastro, provavelmente essa informação estará sendo relacionada à um grid. Este grid deverá ser removido (junto com os demais componentes relacionados: botão de adicionar, botão de remover, TFDQueries, DataSources, etc) e devem ser adicionados somente os campos para a inclusão de um registro do tipo. (Neste caso, geralmente uma tabela intermediária deixará de ser utilizada) Nas units relacionadas ao eSocial, as seguintes alterações: - Na unit eSocial.SXXXX.Classe.Pas, caso o campo ou grupo tenham N ocorrências, o atributo da classe deve ser um TList<RecordCriado>, caso contrário será um atributo simples. - Na unit PreencheSXXXX.pas, caso o campo ou grupo tenham N ocorrências, existirá um loop responsável por percorrer os registros e realizar o preenchimento do objeto do evento. Caso contrário, existirá apenas validações (caso necessário) para o preenchimento do campo diretamente. - Na unit GeraSXXXX.pas, caso o campo ou grupo tenham N ocorrências, existirá um loop responsável por percorrer os itens do objeto e realizar a escrita no XML (Verifique se há necessidade escrever tags de inclusão e fechamento de grupos adicionais à cada iteração do loop ou apenas antes da iteração e no final do loop). Caso contrário, existirá apenas validações (caso necessário) para a escrita da informação no XML. --- ##### **Alteração de condição** Alterações de condições são alterações que indicam sob quais condições, determinado campo será levado ou não para o eSocial, e são muito comuns em atualizações de leiaute. Cabe ao desenvolvedor analisar e discutir com os demais desenvolvedores quais estratégias devem ser seguidas em cada tipo de alteração de condição. Algumas vezes, essas alterações podem ser feitas diretamente no cadastro da informação, em outras, no preenchimento do objeto do evento. --- ##### **Alteração de tamanho, descrição e/ou validação de campo** Em alterações desse tipo, é natural que as implementações sejam simples e pontuais. Exigindo maior atenção apenas alterações em validações de campos, onde cabe ao desenvolvedor interpretar as validações feitas atualmente para as validações que serão feitas na nova versão. - Incluir a validação na hora do preenchimento do objeto ou na hora do cadastro da informação do sistema (preferencialmente) (PreencheSXXXX.pas); - No momento de gerar o XML, geralmente a validação feita é "Existe informação?" se sim, leva para o campo, se não, o campo não deve ser gerado (à menos em situações onde o campo deve ser gerado sem preenchimento). (GeraSXXXX.pas)Verificar com a equipe de qualidade qual o melhor tratamento para as validações, por exemplo, deve-se apenas informar que pode gerar inconsistência e permitir a gravação ou não permitir salvar sem estar correto.
Verificar alterações feitas, se não irão impactar em campos de outros eventos, como rotinas comuns entre eles, por exemplo, a rotina GetNumeroInscr.
--- ##### **Alteração de grupo pai** Em alterações onde o grupo pai de um grupo ou elemento é alterado, deve-se alterar a classe do evento para a correta hierarquia dos atributos e também a unit de preenchimento e geração do respectivo evento, para que a informação seja corretamente preenchida e gerada no XML dentro do grupo correto.